【发布时间】:2013-01-25 04:13:19
【问题描述】:
我正在尝试在方法任务上运行 celerybeat,但无法正常运行。这是一个示例设置:
from celery.contrib.methods import task_method
from celery import Celery, current_app
celery=celery('tasks', broker='amqp://guest@localhost//')
celery.config_from_object("celeryconfig")
class X(object):
@celery.task(filter=task_method, name="X.ppp")
def ppp(self):
print "ppp"
我的 celeryconfig.py 文件是
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'test' : {
'task' : 'X.ppp',
'schedule' : timedelta(seconds=5)
},
}
当我运行 celery beat 时,我收到如下错误:
task X.ppp raised exception, TypeError('ppp() takes exactly 1 argument, (0 given)
当我把这个方法变成一个普通的函数并用`@celery.task'装饰它时,它确实有效,所以其余的设置似乎正在工作。我看到警告in the docs about method tasks,但无法真正找出问题所在。有谁知道如何解决这个问题?
【问题讨论】:
-
嗨,您是否设法使用类方法而不是使用 python 模块中的函数来解决它?我也有同样的情况,但我的应用程序在类中大量实现,所以我现在无法使其正常运行..你能帮忙吗?
-
当时我从未找到答案,但我也没有一直在寻找答案。如果您找到好的解决方案,请告诉我。
标签: python celery celerybeat