bertucho
bertucho

Reputation: 726

Can I use Celery for publishing and subscribing to topics?

All the examples I have seen of executing/scheduling Celery tasks are like this:

add.delay()

I was wondering if I could do something like this with Celery:

celery_app.publish(topic='my-topic')

And in other codebase/service:

@task(topic='my-topic')
def mytask():
    do_stuf()

This way I don't need to know which tasks have to do something when an event happens.

I probably have some missconceptions causing this question, but I couldn't find the answer myself.

Upvotes: 3

Views: 851

Answers (1)

DejanLekic
DejanLekic

Reputation: 19797

No topics, just queues. And yes, you can send task to any queue. Subscribing to a queue is a worker-level, remote command, so that is possible too.

Also, you can't send arbitrary messages to queues, just Celery tasks. If you want to produce/consume arbitrary messages, use kombu.

Upvotes: 3

Related Questions