0

I have multiple tasks as different django apps using a RabbitMQ broker. This was setup with standard django configuration and was working perfectly. I was using groups, chains and calling them from different modules.

As a standard practice, I had:

celery.py:

app = Celery('<proj>')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

And in project/init.py:

from __future__ import absolute_import
from .celery import app as celery_app

All tasks were inherited from celery.Task with run() overwritten.

Now I got a requirement to call a different task on a different RabbitMQ broker.

So here's what I did where I had to call the different task:

diff_app = Celery('diff')
diff_app.config_from_object({'BROKER_URL':'<DIFF_BROKER_URL>'})

Now to call:

diff_app.send_task('<task_name>', (args1,arg2,))

After I do this, when I call my previous tasks, they get routed to this new broker. The moment I comment out this code, everything is fine back again.

When I check celery_app (described above) conf, the broker url is correct. But when I check any previous task->app->conf->broker url, it is updated with new broker. How to fix this?

Confused
  • 617
  • 1
  • 9
  • 17

1 Answers1

0

I removed 'autodiscover_tasks' and associated '_app' with each 'Task' class. This got me through with the issue.

Confused
  • 617
  • 1
  • 9
  • 17