我使用此代码来守护我的应用程序。 它允许您使用以下命令/etc/init/my-service.conf脚本。
python myscript.py start
python myscript.py stop
python myscript.py restart
除此之外,我还有一个init.d脚本来控制我的服务。 这使您可以在操作系统启动时自动启动服务。
这是一个简单的示例,可以助您一臂之力。 只需将您的代码移到一个类中,然后在MyDeamon内部的/etc/init/my-service.conf函数中进行调用即可。
import sys
import time
from daemon import Daemon
class YourCode(object):
def run(self):
while True:
time.sleep(1)
class MyDaemon(Daemon):
def run(self):
# Or simply merge your code with MyDaemon.
your_code = YourCode()
your_code.run()
if __name__ == "__main__":
daemon = MyDaemon('/tmp/daemon-example.pid')
if len(sys.argv) == 2:
if 'start' == sys.argv[1]:
daemon.start()
elif 'stop' == sys.argv[1]:
daemon.stop()
elif 'restart' == sys.argv[1]:
daemon.restart()
else:
print "Unknown command"
sys.exit(2)
sys.exit(0)
else:
print "usage: %s start|stop|restart" % sys.argv[0]
sys.exit(2)
暴发户
如果您正在运行使用Upstart的操作系统(例如CentOS 6)-您还可以使用Upstart来管理服务。 如果您使用Upstart,则可以按原样保留脚本,只需在/etc/init/my-service.conf下添加类似的内容
start on started sshd
stop on runlevel [!2345]
exec /usr/bin/python /opt/my_service.py
respawn
然后,您可以使用启动/停止/重新启动来管理服务。
例如
start my-service
stop my-service
restart my-service
此处提供了使用新贵的更详细示例。
系统化
如果您正在运行使用Systemd的操作系统(例如CentOS 7),则可以查看以下Stackoverflow答案。