Taskhawk Migration Guide

CELERY → v1

Assuming publishers and workers are completely independent processes:

  1. Remove all celery task decorators from your task functions and replace them with taskhawk.task().
  2. Remove all celery related settings from your project.
  3. Provision infra required for taskhawk using and taskhawk_terraform_generator, or manually.
  4. Add new processes for workers on each priority queue that your app publishes to (not all queues may be relevant for your app).
  5. Deploy Taskhawk worker processes (not publishers).
  6. Verify that Taskhawk workers pick up message by sending a test message.
  7. Deploy publisher processes.
  8. Let Celery queues drain to 0.
  9. Terminate Celery worker processes.

If Celery workers also publish async tasks:

  1. Remove all celery task decorators from your task functions and replace them with taskhawk.task().
  2. Remove all celery related settings from your project.
  3. Provision infra required for taskhawk using and taskhawk_terraform_generator, or manually.
  4. Add new processes for workers on each priority queue that your app publishes to (not all queues may be relevant for your app).
  5. Deploy a test TaskHawk worker process.
  6. Verify that Taskhawk workers pick up message by sending a test message.
  7. Double publish to both Taskhawk and Celery in Celery workers.
  8. Deploy Taskhawk worker processes (not other publishers).
  9. Deploy other publisher processes.
  10. Remove double publish in Celery workers.
  11. Deploy Celery workers.
  12. Let Celery queues drain to 0.
  13. Terminate Celery worker processes.