uWSGI独特的计时器python装饰器

时间:2014-04-13 17:25:45

标签: uwsgi python-decorators

我想用python装饰器运行一个类似cron的命令,这些命令需要是唯一的(因此,如果前一个进程仍在运行,它不会启动一个新的进程)使用uwsgi。

看一下文档(http://uwsgi-docs.readthedocs.org/en/latest/PythonDecorators.html)我看到我可以做这样的事情

task.py

from uwsgidecorators import *

@timer(600)   #every 10 minutes
def myfunction(signum):
    pass

uwsgi.ini

[uwsgi]
...
import=task
...

但这种方式并不是唯一的,就像我做这样的事情(遵循文档http://uwsgi-docs.readthedocs.org/en/latest/Cron.html

task.py

...
all_my_tasks
...

uwsgi.ini

[uwsgi]
...
cron2 = minute=-10,unique=1 python path/to/task.py
...

使用uwsgi的装饰器和计时器而不是cron,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:5)

使用uWSGI锁定api:

   from uwsgidecorators import *

   @timer(600)   #every 10 minutes
   def myfunction(signum):
       if uwsgi.is_locked(): return
       uwsgi.lock()
       ....
       uwsgi.unlock()

http://uwsgi-docs.readthedocs.org/en/latest/Locks.html