簡體   English   中英

新消息到達隊列時如何執行芹菜任務?

[英]How to execute celery task when new message arrives to queue?

我有一個節點應用程序,使用RabbitMQ將消息放入隊列中。 然后我有一些使用芹菜的python工人。 當新消息發布到該隊列時,我希望celery自動執行某些任務。 我怎樣才能做到這一點? 任何幫助表示贊賞。

嘗試以下操作:在節點中,您的消息應采用這種格式

var message = {
             "id": "4cc7438e-afd4-4f8f-a2f3-f46567e7ca77",
             "task": "task_name",
             "args": ["this is my arg"],
             "kwargs": {},
             "retries": 0
            }

在Celery中,您的任務應定義如下:

@app.task(serializer='json', name='task_name')
def task1(arg1):
    print arg1

另外,請不要忘記在celery配置文件中配置路由,例如:

app.conf.update(
  CELERY_TASK_RESULT_EXPIRES=3600,
  CELERY_ROUTES = {'tasks.task1': {'queue': 'queue_name'}},
  CELERY_ACCEPT_CONTENT = ['application/json']
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM