我有一个节点应用程序,它使用RabbitMQ将消息放入队列中。然后我在使用芹菜的python中有一些工人。我希望celery在将新消息发布到该队列时自动执行某些任务。 我怎样才能实现这一目标?任何帮助表示赞赏。
答案 0 :(得分:1)
试试这个: 在节点中,您的消息应具有此格式
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']
)