启动系统后自动启动python flask webserver并将其保持到最后

时间:2015-11-07 18:34:52

标签: python user-interface flask automation webserver

我使用flask作为我的UI的网络服务器(它是一个简单的网络界面,可以通过网络摄像头和 framegrabber 在ubuntu上使用gstreamer控制录制同时/有点简单的球员)

每次我需要运行命令"python main.py"以手动从命令提示符运行服务器。

我已经尝试了init.d解决方案,甚至编写了一个简单的shell脚本,每次启动后重新启动系统都会启动它但是它无法使服务器保持运行直到结束(只是调用服务器并终止它我猜)

是否有任何解决方案可以帮助我每次在启动时启动系统并启动并运行后启动Web服务器?

我想将我的系统配置为直接启动到浏览器中,因此不需要用户采取更多操作。

感谢任何建议/帮助。

2 个答案:

答案 0 :(得分:5)

我想建议使用主管,文档是here

为了一个非常简单的演示目的,在您安装并完成设置后,触摸一个新的文件,如下所示:

[program:flask_app]                                                                  
command = python main.py                                      
directory = /dir/to/your/app                            
autostart = true                                                                
autorestart = true

然后

$ sudo supervisorctl update

现在,你应该好好去。烧瓶应用程序将在您启动计算机后每次启动。(注意:分发包已集成到服务管理基础架构中,如果您正在使用其他人,请参阅here

检查您的应用是否正在运行:

$ sudo supervisorctl status

对于制作,您可以使用nginx + uwsgi + supervisor。烧瓶部署文档是here

答案 1 :(得分:0)

一个好的documented解决方案是使用Gunicorn和Nginx服务器: 基本上,做一个wsgi.py文件:

//before
{
  _id: "user0001",
  history: [ "event0342" ]
},
{
  _id: "user0002",
  history: [ "event4521" ]
}

//after
{
  _id: "user0001",
  history: [ "event0342", "event4764" ]
},
{
  _id: "user0002",
  history: [ "event4521", "event5312" ]
}

这将由Gunicorn处理:

from myproject import application

if __name__ == "__main__":
    application.run()

您可以通过在/ etc / init中为项目添加.conf文件来启动服务器,该文件将负责设置正确的env vars并在www-data用户名上启动gunicorn进程(对于nginx如果你愿意,可以使用apache)