- Fix wrong reference in
Retrydocstring 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
- Fix race condition on task retry by @RB387 in #487
- Uses
testcontainersto provide a redis instance for the unit tests by @chrisguidry in #470 - Bump
redisversion from <5 to <6 by @Wh1isper in #460 - Bump
idnafrom 3.6 to 3.7 in /requirements by @dependabot in #444 - Bump
jinja2from 3.1.3 to 3.1.4 in /requirements by @dependabot in #452 - Bump
requestsfrom 2.31.0 to 2.32.0 in /requirements by @dependabot in #461 - Bump
urllib3from 2.2.1 to 2.2.2 in /requirements by @dependabot in #464 - Bump
certififrom 2024.2.2 to 2024.7.4 in /requirements by @dependabot in #468
No changes since v0.26.0b1.
- Prevent worker getting stuck in terminating state by @JonasKs in #370
- Fix redis pipeline created and not used by @iamlikeme in #374
- Bump certifi from 2022.6.15 to 2022.12.7 in
/requirementsby @dependabot in #373 - Use instance's default queue for
queued_jobsdefault by @phy1729 in #368 - Docs: Add details about reusing a unique job id by @ross-nordstrom in #391
- Delete
setup.pyin #398 - Adding a job counter to address
Semaphoreissues by @rm-21 in #408 - docs: add documentation on how to retrieve running jobs by @JonasKs in #377
- feat: add
job_idtoJobDef, closing #376 by @JonasKs in #378 - chore: update dependencies, fixing tests by @JonasKs in #382
- refactor: refactor all asserts into raise
<exception>, close #371 by @JonasKs in #379 - Fix: timezone info occasionally removed from cron job execution time by @iamlikeme in #383
- 3.12 support, drop 3.7, uprev dependencies by @samuelcolvin in #439
- Extend
RedisSettingsto include redis Retry Helper settings by @mernmic in #387 - Allow to connect to Redis using a Unix socket URL… by @drygdryg in #392
- Allow infinite retry by @vvmruder in #396
- Allow
max_connectionsto be set in RedisSettings by @danbox in #406 - Improve
RedisSettingsexplanation inmain_demo.pyby @RamonGiovane in #422 - uprev to v0.26.0b1 by @samuelcolvin in #440
- Allow to opt-out from logging results by @iamlikeme in #352
- Add timezone support for cron jobs by @iamlikeme in #354
- connections: fix pipeline usage for exists command by @utkarshgupta137 in #366
- Fix race condition causing incorrect status not found by @iamlikeme in #362
- Adds
after_job_endhook by @AngellusMortis in #355 - Raise
ResultNotFoundwhenJob.result()finds no job and no result by @iamlikeme in #364 - use
3.11for testing #367 - Signal handler to wait for task completion before shutting down by @JonasKs in #345
- Allow customisation of timezone in logs, #281
- Add the
usernameoption toRedisSettings, #299 - Change primary branch name to
main, 40c8803 - Add
--custom-log-dictCLI option, #294 - Fix error in case of pytz not being installed, #318
- Support and test python 3.11, #327
- Improve docs for parameter
_expiresinenqueue_job, #313 - Fix redis ssl support, #323
- Fix recursion while waiting for redis connection, #311
- switch from watchgod to watchfiles, #332
- Simplify dependencies, drop pydantic as a dependency., #334
- Allow use of
unix_socket_pathinRedisSettings, #336 - Allow user to configure a default job expiry-extra length, #303
- Remove transaction around
infocommand to support Redis 6.2.3, #338 - Switch from
setup.pytopyproject.toml, #341 - Support
abortfor deferred jobs, #307
No changes from v0.23a1.
- Fix jobs timeout by @kiriusm2 in #248
- Update
index.rstby @Kludex in #266 - Improve some docs wording by @johtso in #285
- fix error when cron jobs were terminanted by @tobymao in #273
- add
on_job_startandon_job_endhooks by @tobymao in #274 - Update argument docstring definition by @sondrelg in #278
- fix tests and uprev test dependencies, #288
- Add link to WorkerSettings in documentation by @JonasKs in #279
- Allow setting
job_idon cron jobs by @JonasKs in #293 - Fix docs typo by @johtso in #296
- support aioredis v2 by @Yolley in #259
- support python 3.10, #298
- fix package importing in example, #261, thanks @cdpath
- restrict
aioredisto<2.0.0(soon we'll supportaioredis>=2.0.0), #258, thanks @PaxPrz - auto setting version on release, 759fe03
- CI improvements #243
- fix
log_redis_info#255
- Added
queue_nameattribute toJobResult, #198 - set
job_deserializer,job_serializeranddefault_queue_nameon worker pools to better supported nested jobs, #203, #215 and #218 - All job results to be kept indefinitely, #205
- refactor
cronjobs to prevent duplicate jobs, #200 - correctly handle
CancelledErrorin python 3.8+, #213 - allow jobs to be aborted, #212
- depreciate
pole_delayand use correct spellingpoll_delay, #242 - docs improvements, #207 and #232
- 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_nametocreate_redis_poolandArqRedis, #191 Workercan retrieve thequeue_namefrom the connection pool, if present- fix potential race condition when starting jobs, #194
- support python 3.9 and pydantic 1.7, #214
- Python 3.8 support, #178
- fix concurrency with multiple workers, #180
- full mypy coverage, #181
- Add
py.typedfile to tell mypy the package has type hints, #163 - Added
ssloption toRedisSettings, #165
- Include
queue_namewhen for job object in response toenqueue_job, #160
- Fix cron scheduling on a specific queue, by @dmvass and @Tinche
- add support for Redis Sentinel fix #132
- fix
Worker.abort_jobinvalid expire time error, by @dmvass
- fix usage of
max_burst_jobs, improve coverage fix #152 - stop lots of
WatchVariableErrorerrors in log, #153
- 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 - custom serializers, eg. to use msgpack rather than pickle, #143 by @rubik
- add
ArqRedis.queued_jobsutility method for getting queued jobs while testing, fix #145 by @samuelcolvin
- prevent duplicate
job_idwhen 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)
- fix semaphore on worker with many expired jobs
- add support for different queues, #127 thanks @tsutsarin
- use dicts for pickling not tuples, better handling of pickling errors, #123
- use
pipelineinenqueue_job - catch any error when pickling job result
- add support for python 3.6
- add
Worker.run_check, fix #115
- fix
Workerwith custom redis settings
- add
job_tryargument toenqueue_job, #113 - adding
--watchmode to the worker (requireswatchgod), #114 - allow
ctxwhen creating Worker - add
all_job_resultstoArqRedis - fix python path when starting worker
- Breaking Change: COMPLETE REWRITE!!! see docs for details, #110
- update dependencies
- reconfigure
Job, return a job instance when enqueuing tasks #93 - tweaks to docs #106
- package updates, particularly compatibility for
msgpack 0.5.6
- Breaking Change: integration with aioredis >= 1.0, basic usage hasn't changed but look at aioredis's migration docs for changes in redis API #76
- better signal handling, support
uvloop#73 - drain pending tasks and drain task cancellation #74
- add aiohttp and docker demo
/demo#75
- extract
create_pool_lenientfromRedixMixin - improve redis connection traceback
RedisSettingsrepr method- add
create_connection_timeoutto connection pool
- fix bug with
RedisMixin.get_redis_poolcreating multiple queues - tweak drain logs
- 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
- log redis version when starting worker, fix #64
- log "connection success" when connecting to redis after connection failures, fix #67
- add job ids, for now they're just used in logging, fix #53
- allow set encoding in msgpack for jobs #49
- cron tasks allowing scheduling of functions in the future #50
- Breaking change: switch
to_unix_msto just return the timestamp int, addto_unix_ms_tzto return tz offset too
- uprev setup requires
- correct setup arguments
- add
async-timeoutdependency - use async-timeout around
shadow_factory - change logger name for control process log messages
- use
Semaphorerather thanasyncio.wait(...return_when=asyncio.FIRST_COMPLETED)for improved performance - improve log display
- add timeout and retry logic to
RedisMixin.create_redis_pool
- implementing reusable
Drainwhich takes tasks from a redis list and allows them to be execute asynchronously. - Drain uses python 3.6
async yield, therefore python 3.5 is no longer supported. - prevent repeated identical health check log messages
- mypy at last passing, #30
- adding trove classifiers, #29
- add
StopJobexception for cleaning ending jobs, #21 - add
flushdbtoMockRedis, #23 - allow configurable length job logging via
log_curtailonWorker, #28
- add
shadow_kwargsmethod toBaseWorkerto make customising actors easier.
- reimplement worker reuse as it turned out to be useful in tests.
- use
gatherrather thanwaitfor startup and shutdown so exceptions propagate. - add
--checkoption to confirm arq worker is running.
- fix issue with
Concurrentclass binding with multiple actor instances.
- improving naming of log handlers and formatters
- upgrade numerous packages, nothing significant
- add
startupandshutdownmethods to actors - switch
@concurrentto return aConcurrentinstance so the direct method is accessible via<func>.direct
- improved solution for preventing new jobs starting when the worker is about to stop
- switch
SIGRTMIN>SIGUSR1to work with mac
- 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
- rename settings class to
RedisSettingsand simplify significantly
- add
concurrency_enabledargument to aid in testing - fix conflict with unitest.mock
- prevent logs disabling other logs
- first proper release