我正在使用uwsgi装饰器(特别是cron装饰器)在特定时间执行操作。我有以下代码:
import cherrypy
import uwsgidecorators
class TestObject(object):
@cherrypy.expose
def index(self):
launchapp = self.launchapp(-1,-1,-1,-1,-1,"foobar")
return "This is a test"
@uwsgidecorators.cron(minute,hour,day,month,dayweek)
def launchapp(self,target):
print "the target is %s" %target
return
然而我收到错误:
@uwsgidecorators.cron(minute,hour,day,month,dayweek)
NameError: name 'minute' is not defined
我基本上试图在索引函数中指定cron修饰符的时序参数。谁知道我做错了什么?
答案 0 :(得分:2)
错误与您传递参数的事实无关,只是minute
变量未定义。
你会得到完全相同的错误:
>>> a = 'a'
>>> print b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>>
您可能想要做的是:
@uwsgidecorators.cron(minute = 5,hour = 2, # and so on.
请查看uwsgi documentation以获取更全面的示例。
- 下面的编辑。
在索引被点击后,您似乎正在尝试向crontab添加任务。
这不是装饰器的用例,装饰器只是说一个函数应该在函数定义的cron 上运行。 基本上,当执行装饰器时(和定义,而不是称为),它会被添加到crontab中。
在您的情况下,您想要向crontab添加一个函数;所以你应该使用uwsgi.add_cron
之类的东西。您可以查看decorator code以了解如何使用它。
但是你不应该使用方法而是使用函数。