我正在努力将额外的命令行参数传递给celery任务。我可以在bootstep
中设置所需属性,但是当直接从任务中访问相同属性时,该属性为空(我猜它被覆盖了)。
class Arguments(bootsteps.Step):
def __init__(self, worker, environment, **options):
ArgumentTask.args = {'environment': environment}
# this works
print ArgumentTask.args
这里是自定义任务。
class ArgumentTask(Task):
abstract = True
_args = {}
@property
def args(self):
return self._args
@args.setter
def args(self, value):
self._args.update(value)
并实际任务
@celery.task(base = ArgumentTask, bind = True, name = 'jobs.send')
def send(self):
# this prints empty dictionary
print self.args
我需要使用额外的持久化层,例如持久化对象吗?还是我漏掉了一些非常明显的东西?