我已经使用werkzeug创建了小型web服务器,并且能够使用python my_server.py
以通常的python方式运行它。页面加载,一切正常。现在我想在我的电脑启动时启动它。最简单的方法是什么?我一直在与新贵斗争,但它似乎并不“生活在后台”,因为在我执行start my_server
后,我立即收到kernel: [ 8799.793942] init: my_server main process (7274) terminated with status 1
我的服务器.py:
...
if __name__ == '__main__':
from werkzeug.serving import run_simple
app = create_app()
run_simple('0.0.0.0', 4000, app)
upstart配置文件my_server.conf:
description "My service"
author "Some Dude <blah@foo.com>"
start on runlevel [2345]
stop on runlevel [016]
exec /path/to/my_server.py
start on startup
有什么办法让它工作吗?或者有其他更好的方法来守护脚本?
更新:
我相信问题出在my_server.py
之内。它似乎不会首先启动web服务器(方法run_simple()
)。应该采取哪些步骤使.py文件由诸如upstart之类的任务处理程序运行?
#!/usr/bin/env python
chmod 755
已解决:
问题在于缺少python依赖项。当通过任务管理器启动脚本时(例如upstart
或start-stop-daemon
),不会抛出错误。必须确保Python包含了你所需要的一切。
一个简单的方法是使用crontab:
将出现一个crontab文件进行编辑,在结尾处写入一行:
然后退出。现在,在每次重新启动之后,cron守护进程将运行myserver python脚本。
如果您有在启动时启动的supervisor服务,那么编写一个主管服务要简单得多。
如果程序失败,您甚至可以设置autorestart。
除了gg.kaspersky方法外,还可以将脚本转换为“服务”,以便可以使用以下方法启动或停止脚本:
并将其定义为启动服务,使用:
为此,必须创建此文件并将其保存在/etc/in it.d/中。
在这个例子中,我假设你有一个类似“shebang”的东西!/usr/bin/python位于python文件的开头,这样就可以直接执行它。
最后但并非最不重要的一点是,不要忘记授予python服务器和服务脚本的执行权限:
这是page我最初在这里学的(法语)。
干杯。
相关问题 更多 >
编程相关推荐