Releases: coleifer/huey
Releases · coleifer/huey
2.5.3
This release adds the oft-requested SIGNAL_ENQUEUED
. This signal, of necessity, runs in the calling process, since tasks are enqueued by the application typically. The exception is tasks that are enqueued for retry by the consumer or tasks (including periodic tasks) enqueued by the scheduler. Use care when implementing this signal.
- Add support for a new
SIGNAL_ENQUEUED
. - Use
FOR UPDATE SKIP LOCKED
when supported by the database in thesql_huey
storage engine.
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.