Releases: dymmond/asyncz
Releases · dymmond/asyncz
Version 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.
Version 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).
Version 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.
Version 0.13.4
Changed
- Dropped support for Python 3.9 to match the whole ecosystem.
Version 0.13.3
Fixed
- Different timezones in triggers.
Version 0.13.2
Added
- Compatibility with Python 3.13.
Version 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.
Version 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.
Version 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.
Version 0.11.0
Added
- Allow submitting paused tasks.
- Allow changing in-place attributes of tasks when submitting with
add_task. - Allow selecting logger (classical, loguru).
- 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.
loguruis now optional.