NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2030 most downloaded on PyPI
Job queues in python with asyncio and redis
Last release 5 months ago
16 Apr 2026
Release timing varies
gaps range from 2 weeks to 1.3 years
Most releases are documented
notes for 34 of 55 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
65 releases · first in 2016
Add support for Python 3.14 by @Viicos in #522
Full Changelog: https://github.com/python-arq/arq/compare/v0.27.0...v0.28.0
One column per quarter.
Add support for Python 3.13, remove advertised support for Python 3.8 by @Viicos in #514
retry_on_error type annotation by @armicron in #446Retry docstring by @PassionateBytes in #507Full Changelog: v0.26.3...v0.27.0
retry_on_error type annotation by @armicron in https://github.com/python-arq/arq/pull/446Retry docstring by @PassionateBytes in https://github.com/python-arq/arq/pull/507Full Changelog: https://github.com/python-arq/arq/compare/v0.26.3...v0.27.0
Fix wrong reference in Retry docstring by @PassionateBytes in #507
Fix retry_on_error type annotation by @armicron in #446
Add support for Python 3.13, remove advertised support for Python 3.8 by @Viicos in #514
Fix negative expires_ms and avoid worker freezing while using cron by @Matvey-Kuk in #479
Full Changelog: v0.26.2...v0.26.3
Fix negative expires_ms and avoid worker freezing while using cron by @Matvey-Kuk in #479
Fix race condition on task retry by @RB387 in #487
Uses testcontainers to provide a redis instance for the unit tests by @chrisguidry in #470
testcontainers to provide a redis instance for the unit tests by @chrisguidry in #470Full Changelog: v0.26.0...v0.26.1
testcontainers to provide a redis instance for the unit tests by @chrisguidry in https://github.com/python-arq/arq/pull/470Full Changelog: https://github.com/python-arq/arq/compare/v0.26.0...v0.26.1
No changes since v0.26.0b1 . Full Changelog : v0.26.0b1...v0.26.0
No changes since v0.26.0b1.
Full Changelog: v0.26.0b1...v0.26.0
Prevent worker getting stuck in terminating state by @JonasKs in #370
max_connections to be set in RedisSettings by @danbox in #406RedisSettings explanation in main_demo.py by @RamonGiovane in #422Full Changelog: v0.25.0...v0.26.0b1
max_connections to be set in RedisSettings by @danbox in https://github.com/samuelcolvin/arq/pull/406RedisSettings explanation in main_demo.py by @RamonGiovane in https://github.com/samuelcolvin/arq/pull/422Full Changelog: https://github.com/samuelcolvin/arq/compare/v0.25.0...v0.26.0b1
Allow to opt-out from logging results by @iamlikeme in #352
after_job_end hook by @AngellusMortis in #355ResultNotFound when Job.result() finds no job and no result by @iamlikeme in #3643.11 for testing #367Full Changelog: https://github.com/samuelcolvin/arq/compare/v0.24.0...v0.25.0
Allow customisation of timezone in logs, #281
username option to RedisSettings, #299main, 40c8803--custom-log-dict CLI option, #294_expires in enqueue_job, #313unix_socket_path in RedisSettings, #336info command to support Redis 6.2.3, #338setup.py to pyproject.toml, #341abort for deferred jobs, #307Full Changelog: https://github.com/samuelcolvin/arq/compare/v0.23a1...v0.24.0
No changes from v0.23a1 .
No changes from v0.23a1.
Fix jobs timeout by @kiriusm2 in #248
index.rst by @Kludex in #266on_job_start and on_job_end hooks by @tobymao in #274job_id on cron jobs by @JonasKs in #293fix package importing in example, #261, thanks @cdpath
aioredis to <2.0.0 (soon we'll support aioredis>=2.0.0), #258, thanks @PaxPrz* CI improvements #243 * fix log_redis_info #255
log_redis_info #255Added queue_name attribute to JobResult, #198
queue_name attribute to JobResult, #198job_deserializer, job_serializer and default_queue_name on worker pools to better supported
nested jobs, #203, #215 and #218cron jobs to prevent duplicate jobs, #200CancelledError in python 3.8+, #213pole_delay and use correct spelling poll_delay, #242fix timestamp issue in _defer_until without timezone offset, #182
fix timestamp issue in _defer_until without timezone offset, #182
add option to disable signal handler registration from running inside other frameworks, #183
add default_queue_name to create_redis_pool and ArqRedis, #191
Worker can retrieve the queue_name from the connection pool, if present
fix potential race condition when starting jobs, #194
support python 3.9 and pydantic 1.7, #214
Nothing published for this version
Add py.typed file to tell mypy the package has type hints, #163
Add py.typed file to tell mypy the package has type hints, #163
Added ssl option to RedisSettings, #165
Include queue_name when for job object in response to enqueue_job, #160
Include queue_name when for job object in response to enqueue_job, #160
Fix cron scheduling on a specific queue, by @dmvass and @Tinche
Fix cron scheduling on a specific queue, by @dmvass and @Tinche
add support for Redis Sentinel fix #132
add support for Redis Sentinel fix #132
fix Worker.abort_job invalid expire time error, by @dmvass
fix usage of max_burst_jobs, improve coverage fix #152
fix usage of max_burst_jobs, improve coverage fix #152
stop lots of WatchVariableError errors in log, #153
deal better with failed job deserialization, #149 by @samuelcolvin
deal better with failed job deserialization, #149 by @samuelcolvin
fix run_check(xmax_burst_jobs=...) when a jobs fails, #150 by @samuelcolvin
add worker.queue_read_limit, fix #141, by @rubik
add worker.queue_read_limit, fix #141, by @rubik
custom serializers, eg. to use msgpack rather than pickle, #143 by @rubik
add ArqRedis.queued_jobs utility method for getting queued jobs while testing, fix #145 by @samuelcolvin
prevent duplicate job_id when job result exists, fix #137
prevent duplicate job_id when job result exists, fix #137
add "don't retry mode" via worker.retry_jobs = False, fix #139
add worker.max_burst_jobs
improved error when a job is aborted (eg. function not found)
improved error when a job is aborted (eg. function not found)
Nothing published for this version
Nothing published for this version
Nothing published for this version
catch any error when pickling job result
pipeline in enqueue_jobNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
add create_connection_timeout to connection pool
RedisSettings repr method
add create_connection_timeout to connection pool
fix bug with RedisMixin.get_redis_pool creating multiple queues
fix bug with RedisMixin.get_redis_pool creating multiple queues
tweak drain logs
only save job on task in drain if re-enqueuing
only save job on task in drain if re-enqueuing
add semaphore timeout to drains
add key count to log_redis_info
correct format of log_redis_info
correct format of log_redis_info
Nothing published for this version
Nothing published for this version
* uprev setup requires * correct setup arguments
uprev setup requires
correct setup arguments
Nothing published for this version
Nothing published for this version
* mypy at last passing, #30 * adding trove classifiers, #29
mypy at last passing, #30
adding trove classifiers, #29
Nothing published for this version
add shadow_kwargs method to BaseWorker to make customising actors easier.
add shadow_kwargs method to BaseWorker to make customising actors easier.
reimplement worker reuse as it turned out to be useful in tests.
reimplement worker reuse as it turned out to be useful in tests.
see HISTORY.rst
fix issue with Concurrent class binding with multiple actor instances.
fix issue with Concurrent class binding with multiple actor instances.
Nothing published for this version
improved solution for preventing new jobs starting when the worker is about to stop
improved solution for preventing new jobs starting when the worker is about to stop
switch SIGRTMIN > SIGUSR1 to work with mac
fix main process signal handling so the worker shuts down when just the main process receives a signal
fix main process signal handling so the worker shuts down when just the main process receives a signal
re-enqueue un-started jobs popped from the queue if the worker is about to exit
Nothing published for this version
Nothing published for this version
Nothing published for this version
* first proper release
first proper release
Your coding agent can read these notes before it upgrades. Set up the MCP server →