1
CELERYBEAT_SCHEDULE = {

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

}

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

4

1 回答 1

0

从您的评论中:

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

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

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

>>> 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传递给函数后返回一个值,并且您希望收集所有返回值以按某种顺序存储,例如列表,您可以调用列表压缩或映射,请查看以下示例(阅读评论):

>>> 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中,我稍后会在命令行解释器上打印该列表。

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

于 2014-04-18T15:16:57.923 回答