允许所有芹菜任务的特定关键字

Allow specific keyword for all celery tasks

我对每个任务都有一个特定的关键字,它只用于task_prerun信号,而不是任务本身。

我需要允许每个任务接受该参数而不向每个任务添加 **kwarg 的方法。

可能吗?

您可以使用 message headers 来达到这个目的:

result = celery.send_task('add_numbers', args=(1, 2), headers={'special': 'foo'})

然后您应该能够像这样在 task_prerun 信号处理程序中提取 special 值:

def on_task_prerun(self, sender, task_id, task, args, kwargs,
                   **other_kwargs):
    ...
    special_value = sender.request.message.headers.get('special')
    ...