我正在尝试将类的方法用作django-celery任务,并使用@task装饰器对其进行标记。阿南德·杰亚哈(Anand
Jeyahar)询问,这里也描述了同样的情况。是这样的
class A:
@task
def foo(self, bar):
...
def main():
a = A()
...
# what i need
a.foo.delay(bar) # executes as celery task
a.foo(bar) # executes locally
问题是,即使我使用这样的类实例a.foo.delay(bar)
,也foo
需要至少两个参数,这意味着self
指针未命中。
更多信息:
run()
方法,利用一些参数作为方法选择的关键,但它不正是我想要的。self
参数传递给方法会改变我执行方法的方式,而 不是 像芹菜一样,而是像通常的方法一样(即在测试时)谢谢你的帮助!
自3.0版以来,Celery对使用方法作为任务提供了实验性支持。
有关此文件的文档位于中celery.contrib.methods
,还提到了一些您应该注意的警告:
https://docs.celeryproject.org/zh/3.1/reference/celery.contrib.methods.html
请注意* : 自4.0以来 支持contrib.methods
从Celery中删除 *
我是芹菜、Redis和RabbitMQ的新手。 目前,我正在使用RabbitMQ作为消息代理,并且在配置中没有设置任何内容。(使用Django、MySQL) 我想知道是否有可能使用Redis作为后端的结果存储,同时将RabbitMQ用作消息代理。 我知道的只是添加一些设置,
现在,我想将< code>register事件发布到某个特殊的交换,我可以使用celery远程检索和处理它。 实际上,我已经使用了函数来实现这一点,但是它必须传递来指示应该执行哪个任务并消费它。所以它似乎不太适合我的目标。 我想要的就是这样: 向某些发布消息; 远程机器1订阅此或并捕获消息,用于执行任务; 远程机器2-与机器1相同但执行另一个任务-接收(可能需要回复某些) 例如,就像这个工作流一样
当我运行批处理文件以启用芹菜时: 出现以下错误: 回溯(最后一次调用): 文件“C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\runpy.py”,第193行,作为主“main”,mod\u spec) 文件“C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32
我最近开始研究分布式计算以提高计算速度。我选择了芹菜。然而,我对一些术语不太熟悉。所以,我有几个相关的问题。 来自芹菜文档: ... Celery通过消息进行通信,通常使用代理在客户机和工作人员之间进行调解。为了启动任务,客户机将消息添加到队列中,然后代理将该消息传递给工作者。 什么是客户端(这里)?什么是经纪商?为什么消息通过代理传递?为什么 Celery 会使用后端和队列进行进程间通信? 当我
是否可以在Celery中使用不同的消息代理? 例如:我想使用PostgreSQL而不是RabbitMQ。
问题内容: 我只碰了芹菜和Java两天。:( 现在,我有一个Java客户端通过Rabbitmq发送任务的任务。芹菜将是处理任务的工人。 我知道Python-> rabbitmq-> celery很容易。但是我可以通过java-> rabbitmq-> celery来做到这一点吗? 草案的想法是通过JSON序列化Java函数,然后通过Rabbitmq发送,然后通过celery处理。 最好有示例代码并