wrapper.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from functools import wraps
  2. from huey import RedisHuey
  3. def _task_wrapper(task_fn, pre_task=None, post_task=None):
  4. @wraps(task_fn)
  5. def inner(*args, **kwargs):
  6. if pre_task is not None:
  7. pre_task()
  8. result = task_fn(*args, **kwargs)
  9. if post_task is not None:
  10. post_task()
  11. return result
  12. return inner
  13. class RedisHueyExt(RedisHuey):
  14. def task(self, pre_task=None, post_task=None, *args, **kwargs):
  15. def decorator(fn):
  16. return (super(RedisHueyExt, self)
  17. .task(*args, **kwargs)(_task_wrapper(
  18. fn,
  19. pre_task=pre_task,
  20. post_task=post_task)))
  21. return decorator
  22. def periodic_task(self, pre_task=None, post_task=None, *args, **kwargs):
  23. def decorator(fn):
  24. return (super(RedisHueyExt, self)
  25. .periodic_task(*args, **kwargs)(_task_wrapper(
  26. fn,
  27. pre_task=pre_task,
  28. post_task=post_task)))
  29. return decorator