Good things come in THREEs
- Add
chord()(map -> reduce) andgroup()(map) primitives. - Add
timeout(using SIGALRM for process and gevent.Timeout for greenlet) to control task running time. For threads, unfortunately, there's no good mechanism so instead APIs for cooperatively checking timeout are provided on the Task instance. - Add simple fixed-window
rate_limit()for tasks. - Add
Result.is_ready()method for checking result readiness. - New option for low-latency result fetching, available for RedisHuey. To use, pass
notify_result=Truewhen initializing your Huey instance. - Add new
incr(key, amount=1)to storage API for atomic increment primitive. This is used bychord(). - Add new
wait_result()method to storage APIs for efficiently waiting for a result to become ready. The default implementation uses the exponential backoff from the previous implementation of a blockingResult.get()- so no changes are needed. However if you have a custom storage implementation, this provides a mechanism for pub/sub or other notification of result readiness. - Remove Python 2.x compatibility.
