Celery PeriodicTask参数

时间:2012-06-14 08:03:05

标签: python celery django-celery

如何以编程方式更改传递给Celery的参数?我需要在以下代码中进行更改:

from celery.task import PeriodicTask

class MyTask(PeriodicTask):
    run_every = timedelta(seconds=1)
    value = ''
    def run(self, **kwargs):
        print 'Passed value %s' % value

我希望能够在应用程序生命周期内更改value属性。该值可能是字典,但我怀疑它是否会改变任何内容。

1 个答案:

答案 0 :(得分:1)

为什么要更改参数?谁每次都会传递论点?调度程序在指定的调度时间调用run方法。

您只需从数据库或其他任何内容中读取“值”即可。

def run(self, **kwargs):
    value = get_value_from_database()
    print 'Passed value %s' % value

否则 - 您可能需要按照此处所述创建自定义Scheduler类:http://celery.github.com/celery/userguide/periodic-tasks.html#using-custom-scheduler-classes,并覆盖其中的一些方法..