Releases: coleifer/huey
Releases · coleifer/huey
2.5.2
2.5.1
- More makework thanks to the ass-clowns running Python. Fix issue with deprecation of
datetime.utcnow()
in 3.12. - Add API for customizing the
TaskWrapper
implementation, suitably namedget_task_wrapper_class()
. - Make the
revoke_all()
,restore_all()
andis_revoked()
more robust for various input types. - Fix bug that could occur in the event of a SIGHUP followed by a SIGINT when using thread workers.
- Added new experimental contrib module for SQS queue and S3 result storage.
Python leadership:
2.5.0
- Check to ensure the gevent monkeypatch was applied when running the consumer with greenlet workers, log warning if it is not.
- Explicitly clear the revoked flag on task instances after execution (#713). This will help reduce junk keys left in the storage if you attempt to revoke a task while it is executing.
- Add support for
delay=
,eta=
in Huey's.s()
and.then()
- this adds support for delaying or scheduling pipelines. - Add support for rescheduling callback pipelines when rescheduling a task. This is enabled by default (
preserve_pipeline=True
). - Add an
on_commit_task()
decorator for Django extension that will enqueue the task after any database changes have been committed. This eliminates a common race condition where a task is enqueued and executed before the corresponding database changes have been committed. - Allow overriding the
delay
andeta
when raising aRetryTask
exception. This provides finer-grained control over when a task should be retried. - Add a very simple
ResultGroup.as_completed()
helper to provide a way to deal with multiple results as they become available. Refs #746. - Add an
asyncio
helper for resolving task results asynchronously. Asyncio users can useawait aget_result(result)
orawait aget_result_group(rg)
to fetch a task result in non-blocking fashion. - Fix bug in SIGINT and SIGTERM behavior for gevent users.
- Include lock name when a task fails due to
TaskLocked
exception (#757).
2.4.5
Improves propagation of errors in task results and includes fix for newer versions of pip.
2.4.4
- Add
is_locked(lock_name)
to test whether lock is held. - Allow raising
CancelExecution
within a Task, and overrideretries
. - Add a very basic redis-backed lock that can be acquired more than once (to provide a rudimentary semaphore).
- Add a
periodic_task()
wrapper forMiniHuey
class.
2.4.3
- Fix compatibility with redis-py 4.0.0+.
2.4.2
- Fix implementation of schedule-pop Lua script so it works with Redis cluster.
- Ensure Django connections are closed before and after (previously they were only closed after) task execution with
db_task()
anddb_periodic_task()
. - Allow additional lock-names to be specified when flushing locks.
2.4.1
- Attempt to reconnect to database if connection becomes unusable (e.g. due to a server restart). See:
huey.contrib.sql_huey.SqlHuey
. - Do not use a soft file-lock for
FileStorage
- usefcntl.flock()
instead.
2.4.0
- Task expiration: https://huey.readthedocs.io/en/latest/guide.html#task-expiration
- Add option to make
crontab()
parsing strict, raising an error if an invalid interval specification is given. You probably want to enable this. - Fix bug in the FileStorage dequeue() method, which attempted to unlink an open file.
2.3.2
- Add hook (
Huey.build_error_result
) for customizing the error result metadata. - Avoid crashing if another module already modified/set the multiprocessing start method.