【问题标题】:celery beat schedule arguments [closed]芹菜节拍时间表参数[关闭]
【发布时间】:2014-04-18 14:23:13
【问题描述】:
CELERYBEAT_SCHEDULE = {

    'task every 20 seconds': {
        'task': 'tasks.function',
        'schedule': timedelta(seconds=20),       
        'args': [argument] 
     },

}

我的函数接受一个参数。但我想将其称为针对一名工人的不止一个论点。我如何在“args:”中调用不同的参数,或者我必须做什么来定义多个参数。

【问题讨论】:

  • “我如何在“args:”中调用不同的参数,或者我必须做什么来定义多个参数。” -- 没看懂:(
  • function(argument)->worker 执行的是什么。函数(arg1),函数(arg2)....我想要这个:)对不起我的英语:)

标签: python scheduled-tasks celerybeat


【解决方案1】:

来自您的评论:

function(argument)-> 工人执行什么。 function(arg1), function(arg2) .... 我想要这个:

你可以通过多种方式完成这项工作,因为这个参数应该是一个迭代器,例如列表,元组:

1) 假设如果您的函数不返回任何值,只需处理 argi ∈参数(例如打印),那么您应该使用简单的for 循环,请参见以下示例(读取 cmets):

>>> def f(arg):
...  print arg
... 
>>> arguments = ('aa', 'bb') # it is a tuple 
>>> for arg in arguments:
...  f(arg)
... 
aa  # f('aa')
bb  # f('bb')
>>> 

2) 如果假设函数类似于在处理传递给函数的arg 后返回一个值,并且您希望收集所有返回值以存储在某个序列中,例如列出您可以调用列表压缩或映射的列表,请查看以下示例(阅读 cmets):

>>> def f(arg):
...   print "passed arguemnt is: ", arg
...   i = arg * 2
...   return i
... 
>>> arguments = (11, 22)
>>> L = map(f, arguments)  # (1) using map()
passed arguemnt is:  11  # f(11)
passed arguemnt is:  22  # f(22)
>>> L
[22, 44]
>>> L = [f(arg) for arg in arguments]  # (2) using list compression
passed arguemnt is:  11  # f(11)
passed arguemnt is:  22  # f(22)
>>> L
[22, 44]
>>> 

在最后两个技巧中,返回的值被存储到一个列表L 中,我稍后会在命令行解释器上打印该列表。

这个概念还是一样的,就像其他编程语言一样,如果你想重复执行一些语句,你需要循环:

【讨论】:

    猜你喜欢
    • 2015-05-11
    • 2020-07-04
    • 2018-09-08
    • 2020-01-23
    • 2017-02-21
    • 2021-10-24
    • 1970-01-01
    • 2018-10-18
    • 2012-03-27
    相关资源
    最近更新 更多