使用* args将值传递给任务时引发意外的关键字参数

时间:2019-01-10 13:32:55

标签: python django celery django-celery

我是芹菜新手,并且遇到过以下情况:

我有一个任务是Django应用程序的一部分,它包含以下内容:

def run_tests_report(correlation_id, workers, *args)

传递给* args的值是在我们的Django数据模型中定义为test_name_or_mark = models.CharField的字符串

作为base.py函数的一部分,

会调用run_tests_report()

tasks.append( task.si(correlation_id=request.correlation_id, workers=request.workers, test_name_or_mark=request.test_name_or_mark)

当我尝试通过我们的请求使用此任务时,会引发以下错误:

TypeError: run_tests_report() got an unexpected keyword argument 'test_name_or_mark'

我已经能够断言test_name_or_mark的值是一个包含我期望值的字符串。

当我直接调用任务时,我还能够验证它是否有效:

与工人一起

In [4]: run_tests_report('alwaysbetesting9_no_workers_multiple_marks', '2', 'smoke', 'fix', 'regression')
MORE THAN ONE
smoke or fix or regression
workers multiple marks

没有工人:

In [2]: run_tests_report('alwaysbetesting8_no_workers_multiple_marks', 0, 'smoke', 'fix', 'regression')
MORE THAN ONE
smoke or fix or regression
no workers multiple marks

我现在用django调用任务,为什么现在不起作用,我感到困惑。我需要更新数据模型吗?

0 个答案:

没有答案