如何按计划在后台运行我的python脚本?

use*_*079 2 python linux service

我有一个小的python脚本,可以创建从MySQL中提取的数据图.我正试图找出一种在后台运行脚本的方法.我尝试过很多东西:

  1. 运行脚本的Cron作业
  2. 循环计时器
  3. 使用&命令在后台运行脚本

这些都有优点和缺点:

  1. 每半个小时运行一次以上的Cron Job似乎占用了更多的资源然后它的价值.
  2. 放入脚本的循环计时器实际上并没有将脚本放在后台,只是让它保持运行.
  3. Linux&命令介绍了该过程,但与真正的Linux服务不同,我无法在不杀死它的情况下重新启动/停止它.

有人能指出我的方法来充分利用所有这些方法吗?

sec*_*ind 11

为什么不尝试将脚本变成正确的守护进程.这个链接是一个很好的起点.

import os
import subprocess
import time
from daemon import runner

class App():
    def __init__(self):
        self.stdin_path = '/dev/null'
        self.stdout_path = '/dev/tty'
        self.stderr_path = '/dev/tty'
        self.pidfile_path =  '/tmp/your-pid-name.pid'
        self.pidfile_timeout = 5
    def run(self):

        try:
            while True:

                ### PUT YOUR SCRIPT HERE ###

                time.sleep(300)

        except Exception, e:
            raise

app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
Run Code Online (Sandbox Code Playgroud)

您可以像任何其他Linux服务一样启动/停止/重新启动此脚本.