2014-09-25 34 views
0

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

+0

我也在github上發佈了這個問題:https://github.com/celery/celery/issues/2279 – 2014-09-25 13:26:00

回答

1

試試這個: 在節點的消息應該有這樣的格式

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

而且芹菜中你的任務應該是這樣定義:

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

而且不要忘了配置路線你的芹菜配置文件,例如:

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