我想用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,有没有办法做到这一点?
答案 0 :(得分:5)
使用uWSGI锁定api:
from uwsgidecorators import *
@timer(600) #every 10 minutes
def myfunction(signum):
if uwsgi.is_locked(): return
uwsgi.lock()
....
uwsgi.unlock()