芹菜 - 如何从远程机器发送任务?

use*_*018 27 python celery

我们有一台运行芹菜工作者的服务器和一个Redis队列.任务在该服务器上定义.
我需要能够从远程计算机调用这些任务.
我知道它已经完成,send_task但我仍然没有弄清楚怎么办?如何判断send_task队列在哪里?我在哪里通过连接参数(或任何需要的)?我一直在找几个小时,我能找到的就是这个:

from celery.execute import send_task
send_task('tasks.add')
Run Code Online (Sandbox Code Playgroud)

嗯,这意味着我也需要celery在我的呼叫机器上.但我还需要设置什么呢?

小智 41

这可能是一种方法:创建Celery对象并使用该对象的send_task,该对象可以具有查找代理的配置.

from celery import Celery
celery = Celery()
celery.config_from_object('celeryconfig')
celery.send_task('tasks.add', (2,2))
Run Code Online (Sandbox Code Playgroud)

celeryconfig是一个包含celery配置的文件,还有其他方法在celery对象上设置config.

  • 让我离开几个小时的东西是我需要定义我的生成脚本放置"作业"的队列.结束了`celery.send_task('tasks.the_remote_task_name',([arguments,...]),queue ='name_of_queue')`来自这个[链接](https://www.marshut.net/ipwtin/发送任务 - 从-A-机和运行芹菜 - 工人 - 上另一个-machine.html) (4认同)
  • 我最近有一个类似的问题,send_task调用是正确的,但服务器找不到任务.我收到错误"收到类型的未注册任务...".要解决这个问题,请在任务定义装饰器中添加'name'参数.示例可以在[这里]找到(https://gist.github.com/johnpaulhayes/8403108) (2认同)