test_autoretry.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from __future__ import absolute_import
  2. from celery.contrib.autoretry import autoretry
  3. from celery.tests.case import AppCase
  4. class TasksCase(AppCase):
  5. def setup(self):
  6. @autoretry(on=(ZeroDivisionError,))
  7. @self.app.task(shared=False)
  8. def autoretry_task_no_kwargs(a, b):
  9. self.iterations += 1
  10. return a/b
  11. self.autoretry_task_no_kwargs = autoretry_task_no_kwargs
  12. @autoretry(on=(ZeroDivisionError,), retry_kwargs={'max_retries': 5})
  13. @self.app.task(shared=False)
  14. def autoretry_task(a, b):
  15. self.iterations += 1
  16. return a/b
  17. self.autoretry_task = autoretry_task
  18. class test_autoretry(TasksCase):
  19. def test_autoretry_no_kwargs(self):
  20. self.autoretry_task_no_kwargs.max_retries = 3
  21. self.autoretry_task_no_kwargs.iterations = 0
  22. self.autoretry_task_no_kwargs.apply((1, 0))
  23. self.assertEqual(self.autoretry_task_no_kwargs.iterations, 4)
  24. def test_autoretry(self):
  25. self.autoretry_tasks.max_retries = 3
  26. self.autoretry_task.iterations = 0
  27. self.autoretry_task.apply((1, 0))
  28. self.assertEqual(self.autoretry_task.iterations, 6)