【问题标题】:Running shell script with web2py scheduler使用 web2py 调度程序运行 shell 脚本
【发布时间】:2014-01-07 20:59:33
【问题描述】:

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

【问题讨论】:

  • 这正是我使用它时的运行方式,如果我的轶事经验让你感到安慰的话。导致顺利的结果。
  • @salamisalem 我使用了 subprocess 模块,没有遇到任何问题。它也完美无缺。如果您将您的评论写为答案,我想将其签署为已接受。

标签: web2py


【解决方案1】:

取决于您托管 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"])

【讨论】:

  • 感谢您的回复。我已经说过我将使用 web2py 的调度程序。我使用系统实用程序启动调度程序,在 linux 中通过 init.d 脚本和在 windows nssm 中,所以你的答案是无关紧要的。
【解决方案2】:

如果我的轶事经验让您感到安慰,那正是我使用它时的运行方式。导致平滑的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多