Skip to content

4.0.0a3

Compare
Choose a tag to compare
@github-actions github-actions released this 01 Oct 21:30
· 204 commits to master since this release
  • BREAKING The scheduler classes were moved to be importable (only) directly from the apscheduler package (apscheduler.Scheduler and apscheduler.AsyncScheduler)
  • BREAKING Removed the "tags" field in schedules and jobs (this will be added back when the feature has been fully thought through)
  • BREAKING Removed the JobInfo class in favor of just using the Job class (which is now immutable)
  • BREAKING Workers were merged into schedulers. As the Worker and AsyncWorker classes have been removed, you now need to pass role=SchedulerRole.scheduler to the scheduler to prevent it from processing due jobs. The worker event classes (WorkerEvent, WorkerStarted, WorkerStopped) have also been removed.
  • BREAKING The synchronous interfaces for event brokers and data stores have been removed. Synchronous libraries can still be used to implement these services through the use of anyio.to_thread.run_sync().
  • BREAKING The current_worker context variable has been removed
  • BREAKING The current_scheduler context variable is now specified to only contain the currently running instance of a synchronous scheduler (apscheduler.Scheduler). The asynchronous scheduler instance can be fetched from the new current_async_scheduler context variable, and will always be available when a scheduler is running in the current context, while current_scheduler is only available when the synchronous wrapper is being run.
  • BREAKING Changed the initialization of data stores and event brokers to use a single start() method that accepts an AsyncExitStack (and, depending on the interface, other arguments too)
  • BREAKING Added a concept of "job executors". This determines how the task function is executed once picked up by a worker. Several data structures and scheduler methods have a new field/parameter for this, job_executor. This addition requires database schema changes too.
  • Dropped support for Python 3.7
  • Added support for Python 3.12
  • Added the ability to run jobs in worker processes, courtesy of the processpool executor
  • Added the ability to run jobs in the Qt event loop via the qt executor
  • Added the get_jobs() scheduler method
  • The synchronous scheduler now runs an asyncio event loop in a thread, acting as a façade for AsyncScheduler
  • Fixed the schema parameter in SQLAlchemyDataStore not being applied
  • Fixed SQLalchemy 2.0 compatibility