Release Notes¶
0.15.0¶
Added¶
- Added scheduler-native task inspection APIs through
Task.schedule_state,Task.paused,Task.snapshot(),scheduler.get_task_info(), andscheduler.get_task_infos(...). - Added
scheduler.run_task(...)as the canonical Asyncz-native "run now" operation for administrative and dashboard flows. - Added richer task filtering and sorting to the CLI
listcommand, including task state, executor, trigger, and free-text query support. - Expanded the dashboard task view with state-aware filtering, richer task metadata, and overview summaries for scheduled, paused, and pending tasks.
Changed¶
- Replaced the
loguruintegration with Python's built-inloggingmodule across the scheduler, dashboard, CLI examples, and documentation. - Migrated the documentation stack from
mkdocs-materialtozensicaland aligned the docs build flow with the current project structure. - Expanded and corrected the documentation for schedulers, triggers, tasks, stores, executors, ASGI integration, settings, CLI usage, dashboard usage, and API reference material.
- Standardized the development type-checking and linting workflow around Ruff and
ty. - The CLI and dashboard now delegate task run, pause, resume, and removal behavior to scheduler-owned APIs instead of maintaining separate control logic.
- Dashboard task rendering now uses immutable task inspection snapshots rather than ad hoc serialization of live task objects.
Fixed¶
- Date trigger creation from the CLI and dashboard now uses the correct
run_atparameter and handles encoded UTC offsets more reliably. - Dashboard log storage configuration is now shared correctly between log writers and readers when using a custom storage backend.
- Dashboard log records now resolve task identifiers consistently from
task_id,job_id, andasyncz_task_id. - Coroutine execution events now populate the task store alias consistently.
- MongoDB store aliases are now normalized consistently between CLI parsing and scheduler plugin defaults.
- Removed a duplicate executor pool shutdown path.
- Fixed a scheduler
update_task()recursion path that could surface during pause/resume-style management operations. - Fixed the dashboard overview page so controller-supplied task summaries and recent-task data are actually rendered.
- Fixed the dashboard overview template link generation.
- Fixed dashboard task filters so they persist across HTMX refreshes and row or bulk actions.
- Fixed manual dashboard runs of one-off tasks so they remain visible in the UI as paused instead of disappearing immediately.
Removed¶
- Removed the
logurudependency and theloguru-based logging backend.
0.14.3¶
Fixed¶
- When using the settings it was causing a conflict with the types and not casting properly to the right type due
to the
from future import __annotations__.
0.14.2¶
Changed¶
- Replaced
ChildLilyasub‑app mounting withRouter‑based composition for a cleaner and more maintainable architecture. AsynczAdminnow uses a single composed Lilya app that mounts/loginand/logoutat root while serving the dashboard under its prefix.- Simplified
include_in()method — mounts the composed app at/for proper reverse‑proxy behavior. - Improved
url_prefixnormalization to avoid double slashes and ensure consistent route generation. Asyncz Dashboardis now fully reverse-proxy agnostic and works seamlessly behind Nginx or ASGI mounts.
0.14.1¶
Fixed¶
- Duplicate dashboard URL prefixing (
/dashboard/tasks/dashboard) when deployed behind Nginx or under an ASGI mount. - Nested HTMX table container causing duplicate
#tasks-tableand incorrecthx-getpaths.
Changed¶
get_effective_prefix()now prefers the configureddashboard_url_prefixand falls back toroot_pathonly when configured as/.- All HTMX and action URLs in the dashboard are now relative to the current path for reverse-proxy compatibility.
- Updated templates to remove hardcoded
/dashboardfrom links and actions. - Asyncz Dashboard is now fully reverse-proxy ready (works with
X-Forwarded-Prefixand ASGI mounts).
0.14.0¶
Added¶
- New settings module using
ASYNCZ_SETTINGS_MODULE. - New Asyncz client.
- Asyncz Dashboard allowing to have a UI vision of your current scheduler and tasks.
- Introduced AsynczAdmin class for embedding the dashboard directly into Lilya apps.
- Added optional login and session-based authentication through
SimpleUsernamePasswordBackend. - Implemented
AuthGateMiddlewareto protect dashboard routes and handle HTMX redirects. - Added CORS and session middleware support in
AsynczAdminwith customizable options. - Integrated
DashboardConfigaccess via global settings (settings.dashboard_config). - Introduced detailed documentation and examples for custom
AuthBackendimplementations. - Support for Python 3.14
Changed¶
- Updated internals to allow multiple languages for documentation.
- Documentation structure.
0.13.5¶
Changed¶
- Use monkay asgi lifespanHook instead of own implementation.
0.13.4¶
Changed¶
- Dropped support for Python 3.9 to match the whole ecosystem.
0.13.3¶
Fixed¶
- Different timezones in triggers
0.13.2¶
Added¶
- Compatibility with Python 3.13.
0.13.1¶
Added¶
FileStorewas added (simple synchronization via files in a directory).with_lockwas added toasyncz.file_locking.
Fixed¶
- SQLAlchemyStore didn't pass extra arguments to create_engine.
0.13.0¶
Added¶
- Multi-Processing safe mode.
Fixed¶
andwas mapped to the wrong trigger.- Some defaults had wrong module pathes.
- Missing export of NativeAsyncIOScheduler from schedulers.
0.12.0¶
Added¶
shutdowntrigger.- Tasks can have a lifecycle.
- NativeAsyncIOScheduler with async start/shutdown methods and some optimizations.
Fixed¶
- Raise correct exception when maximal instances are reached.
- Task instances are now per scheduler not per executor.
Changed¶
- Invalid executor init kwargs are not ignored anymore.
Removed¶
- MaxInterationsReached exception. It had no use and was broken from design.
0.11.0¶
Added¶
- Allow submitting paused tasks.
- Allow changing in-place attributes of tasks when submitting with
add_task. - Allow selecting alternate logger implementations.
- Allow naming schedulers with an extra logger name.
Fixed¶
remove_all_tasksdidn't check the store of tasks when pending_tasks was used (stopped scheduler).
Changed¶
- Replace
UndefinedTypewithUndefined. Shim provided for backwards compatibility. add_taskhas now more arguments with undefined as default.pending_taskshas now no more store alias in it.tzlocalis now optional.- Tasks use the timezone of the scheduler for their triggers which require a timezone.
- Logging backends became optional.
0.10.1¶
Added¶
- Decorated functions have now the
asyncz_tasksattribute if Tasks are used in decorator mode without a providedid.
Fixed¶
- Fix backward compatibility in passing functions via fn keyword to add_task
0.10.0¶
Added¶
- Task are decorators now.
- Tasks can be added via add_task.
- Trigger can now overwrite
mistrigger_grace_timeviaallow_mistrigger_by_default. - Pools can now overwrite
waitand can setcancel_futures.
Changed¶
- Task id can be None (decorator mode).
- Task have now pending attribute.
- Tasks work more independent of schedulers.
Removed¶
schedule_taskcall (superseeded by add_task overloads).
Fixed¶
task_defaultsoverwrite settings.- Fix one-off tasks in background with add_task (before with asgi a misstrigger can happen because of a lag of > 1 second).
- Fix
add_storecall on stopped scheduler.
0.9.0¶
Added¶
- SQLAlchemy store
- ASGI integration
Changed¶
- Schedulers use now refcounting to track if it should startup/shutdown (for asgi, lifespan).
- Schedulers support now the async and sync context manager protocols.
- Improved typings.
- The default (builtin) plugins live now in
asyncz/scheduler/defaults.py.
0.8.3¶
Fixed¶
ref_to_objwas not considering any functionality that could come from a decorator implementing thefn.
0.8.2¶
Fixed¶
mistrigger_grace_timefrom_setupwas not creating a default.- Typing clash in the datastructures.
0.8.1¶
Added¶
threadpoolto the internal mapping.
0.8.0¶
Fix¶
AsyncIOSchedulerwas not pulling the event loop appropriately.- Fix
mongodbstore finder.
0.7.0¶
Changed¶
EsmeraldSchedulercontrib register events to match the new Esmerald implementation.
0.6.0¶
Fixed¶
Breaking change¶
- In the past,
asynczhad a typo inmax_intances. This was changed tomax_instancesinstead. This addresses the Discusson #49 raised by @devkral.
0.5.0¶
Changed¶
- Updated internal
__setstate__ofTaskto accept also__pydantic_extra__andmodel_config.
Added¶
- Support for Python 3.12.
Fixed¶
- Pydantic 2.0
__pydantic_extra__pickling errors. - Internal issues with MagicMock and Pydantic 2.0
0.4.0¶
Changed¶
- Move internal procedure to pydantic 2.0. This process speeds up the internal processing by leveraging pydantic 2.0 performance.
Warning
To use this version of Asyncz with Esmerald, until it is announced compatibility with pydantic 2.0 with Esmerald, it is recommended to use Asyncz prior to this release.
0.3.1¶
Fixed¶
EsmeraldSchedulerattribute update (configurations and timezone).
0.3.0¶
Changed¶
- Updated base requirements.
- Fixed linting and parsing of dates and integers.
0.2.0¶
Changed¶
- Breaking changes: Removed support for python 3.7 as it was limiting the technology from evolving with the rest of the packages.
0.1.4¶
Fix¶
- Store module imports causing issues internally.
0.1.3¶
Changed¶
- Updated pyproject to support python 3.11.
0.1.2¶
Changed¶
- Update Licence agreement. It was supposed to go in the version 0.1.0
0.1.1¶
Fixed¶
next_wakeup_timefrom base scheedulers wasn't being assigned properly.del timeoutfrom the asyncio scheduler wasn't being deleted.- Added missing return on the
process_taskscausing the waiting time to be None.
0.1.0¶
This release is the first release of Asyncz and it contain all the essentials.
Added¶
- Triggers
- Schedulers
- Executors
- Stores
- Events
- Contrib