我需要管理由web2py web界面控制的一些计划任务。为此,我想利用web2py的调度程序。我想到的第一件事是使用调度程序函数内的子进程模块运行shell脚本,但我不确定它是否是正确的方法。有最好的做法吗?你有什么建议吗?
答案 0 :(得分:5)
取决于您托管web2py应用的位置。 如果您在PythonAnywhere上托管它,则可以使用计划任务来运行web2py的调度程序。
例如,您可以创建以下日常任务:
#/usr/bin/env python
import logging
import socket
import sys
import subprocess
lock_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
try:
lock_id = "MyApp-scheduler" # this should be unique. using your username as a prefix is a convention
lock_socket.bind('\0' + lock_id)
logging.debug("Acquired lock %r" % (lock_id,))
except socket.error:
# socket already locked, task must already be running
logging.info("Failed to acquire lock %r" % (lock_id,))
sys.exit()
subprocess.call(["python","web2py/web2py.py","-K","MyApp"])
答案 1 :(得分:0)
如果我的轶事经历让你感到安慰的话,那就是我使用它的原因。导致顺利结果。