创建一个python守护进程

时间:2014-02-06 05:43:38

标签: python daemon

我有一个流式传输twitter的脚本,并从中捕获实时数据。然后分析这些数据用于我工作产品的公司。

问题是,我希望这个脚本能够在服务器上连续运行而不必监督它。我不知道如何做到这一点,到目前为止我在stackoverflow上看到的一切都非常复杂。任何人都可以告诉我在python中制作守护进程的过程的基础知识,以及如何进行它?我目前正在浏览http://www.gavinj.net/2012/06/building-python-daemon-process.html,这是一个很好的教程,但我也希望得到另一个意见。

3 个答案:

答案 0 :(得分:3)

一个答案是不要让它成为一个守护进程,而是使用一个可以使任意应用程序像守护进程一样的进程控制工具。其中一个工具是supervisord

以这种方式做到这一点的好处是,您可以获得良好的责任分离,以及用于启动,停止,重新启动和检查日志以获得最少投资的良好工具支持

答案 1 :(得分:2)

我还在python中创建了一个twitter客户端来收集实时数据,

我将其设置为按计划运行,每10分钟运行一次以防止超出速率限制,

我正在使用Mac OSX,我设置了一个“launchd”任务来运行python脚本,

您需要创建一个配置运行计划的“plist”文件,此页面将有所帮助。 http://launched.zerowidth.com/

答案 2 :(得分:1)

我曾经创建了一个简单的守护程序,它每10秒清空一次日志文件。您可以修改它以供您使用:

#!/usr/bin/python
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/foo.pid'
        self.pidfile_timeout = 5
    def run(self):
        while True:
            print "Going to clear log !! "
            cmd1 = 'cat /dev/null > /var/log/mysqld.log'
            os.system(cmd1)
            time.sleep(10)

app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()

您可以在此处找到其他步骤:

http://pc2solution.blogspot.in/2013/11/python-create-daemon-in-linux-to-empty.html?updated-min=2013-01-01T00:00:00-08:00&updated-max=2014-01-01T00:00:00-08:00&max-results=23