使用web2py调度程序运行shell脚本

时间:2013-12-31 12:42:23

标签: web2py

我需要管理由web2py web界面控制的一些计划任务。为此,我想利用web2py的调度程序。我想到的第一件事是使用调度程序函数内的子进程模块运行shell脚本,但我不确定它是否是正确的方法。有最好的做法吗?你有什么建议吗?

2 个答案:

答案 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)

如果我的轶事经历让你感到安慰的话,那就是我使用它的原因。导致顺利结果。