我正在尝试在方法任务上运行 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'装饰它时,它确实有效,所以其余的设置似乎正在工作。我在文档中看到了有关方法任务的警告,但无法真正找出问题所在。有谁知道如何解决这个问题?