1.11.0
Backwards-incompatible changes
Previously, it was possible for certain tasks to be silently ignored if a task with that name already existed in the registry. To fix this, I have made two changes:
- The task-name, when serialized, now consists of the task module and the name of the decorated function. So, "queue_task_foo" becomes "myapp.tasks.foo".
- An exception will be raised when attempting to register a task function with the same module + name.
Together, these changes are intended to fix problems described in #386.
Because these changes will impact the serialization (and deserialization) of messages, it is important that you consume all tasks (including scheduled tasks) before upgrading.
Always-eager mode changes
In order to provide a more consistent API, tasks enqueued using always_eager
mode will now return a dummy TaskResultWrapper
implementation that wraps the return value of the task. This change is designed to provide the same API for reading task result values, regardless of whether you are using always-eager mode or not.
Previously, tasks executed with always_eager
would return the Python value directly from the task. When using Huey with the consumer, though, task results are not available immediately, so a special wrapper TaskResultWrapper
is returned, which provides helper methods for retrieving the return value of the task. Going forward, always_eager
tasks will return EagerTaskResultWrapper
, which implements the same get()
API that is typically used to retrieve task return values.