我创build了一个由Web前端(nginx),python runner胶水处理程序(uwsgi)和我自己的python代码(fetcher)组成的服务。 我已经做了一个脚本(deploy.sh)来启动差异服务:
nginx uwsgi --ini inifie.ini python fetcher.py & disown
我的问题是关于如何启动我的python守护进程。 我想让它在后台运行。 它不应该打印任何东西到我目前的terminal。 如果我添加“打印”电话到我的fetcher脚本,我目前在terminal窗口中看到它们。
所以我的问题是:我如何启动我的fetcher.py脚本作为守护进程?
使用python-daemon软件包或使用daemontools 。
另请参阅stream程pipe理 。
你想从shell脚本或Python程序中执行此操作吗?
如果来自shell脚本,这很简单:
nohup fetcher.py >/dev/null 2>&1 </dev/null & disown
如果你想从Python程序中做到这一点,我build议你看看使用python守护进程模块 ,也可能作为你最喜欢的类Unix操作系统的预制软件包。
我经常在python程序中这样做一个fork:
if __name__ == '__main__': try: pid = os.fork() if pid > 0: sys.exit(0) except OSError: report( "unable to fork: %s" % sys.exc_info()[1]) raise [program starts here ]
简单的解决方法是: nohup
nohup myprogram > myprogram.log &
supervisord运行良好,并可以被发送出故障警报