芹菜击败args:列表与元组

Nei*_*eil 0 python celery django-celery celerybeat

芹菜文档描述了如何通过位置参数,以您的节拍计划任务列表或元组.

我有一个任务,只需一个参数,一个整数列表:

@shared_task
def schedule_by_ids(ids):
  ...
Run Code Online (Sandbox Code Playgroud)

我的celerybeat时间表如下:

CELERYBEAT_SCHEDULE = {
    'schedule_by_ids': {
        'task': 'myproj.app.tasks.schedule_by_ids',
        'schedule': crontab(minute='*/10', hour='8-21'),
        'args': ([1,]),
    },
}
Run Code Online (Sandbox Code Playgroud)

我的任务失败,"int不可迭代" TypeError.根据我的显示器(芹菜花),args传递为[1].

当我将args作为列表时,例如[[1]],arg显示在监视器中,[[1]]并且它工作正常.

我的问题是:当它是一个元组时,它是如何通过args的?为什么?

use*_*ica 6

([1,])
Run Code Online (Sandbox Code Playgroud)

那不是一个元组.这只是[1,]在分组括号中.如果你想要一个1元素的元组,你需要像这样放一个逗号,以区别于括号表达式:

([1,],)
Run Code Online (Sandbox Code Playgroud)

我怀疑你可能错放了逗号,你打算这样做:

([1],)
Run Code Online (Sandbox Code Playgroud)