我有一个流式传输twitter的脚本,并从中捕获实时数据。然后分析这些数据用于我工作产品的公司。
问题是,我希望这个脚本能够在服务器上连续运行而不必监督它。我不知道如何做到这一点,到目前为止我在stackoverflow上看到的一切都非常复杂。任何人都可以告诉我在python中制作守护进程的过程的基础知识,以及如何进行它?我目前正在浏览http://www.gavinj.net/2012/06/building-python-daemon-process.html,这是一个很好的教程,但我也希望得到另一个意见。
答案 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()
您可以在此处找到其他步骤: