【问题标题】:Celery beat args: list vs. tupleCelery beat args:列表与元组
【发布时间】:2013-12-28 07:42:47
【问题描述】:

Celery docs describe 如何将位置参数作为列表或元组传递给按节拍安排的任务。

我有一个任务,它接受一个参数,一个整数列表:

@shared_task
def schedule_by_ids(ids):
  ...

我的 celerybeat 时间表如下所示:

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

我的任务因“int is not iterable”而失败TypeError。根据我的显示器(芹菜花),参数传递为[1]

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

我的问题是:当它是一个元组时,它是如何传递参数的?为什么?

【问题讨论】:

    标签: python celery django-celery celerybeat


    【解决方案1】:
    ([1,])
    

    这不是元组。这只是分组括号中的[1,]。如果你想要一个 1 元素的元组,你需要像这样在里面放一个逗号,以将它与带括号的表达式区分开来:

    ([1,],)
    

    我怀疑你可能把逗号放错了位置,而你的本意是这样做的:

    ([1],)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2019-11-15
      • 2018-12-28
      • 2015-01-01
      • 2015-06-04
      • 2022-01-20
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多