如何在后台运行Flask Server

时间:2016-04-07 02:54:11

标签: python flask raspberry-pi

我在Rapsberry Pi上设置了Flask,我使用它的唯一目的是充当xml文件的服务器,我使用Python脚本将数据传输到iPad应用程序(iRule)。

我的RPI设置为无头,我使用PuTTY,WinSCP和TightVNC Viewer访问Windows 10。

我通过打开终端窗口和以下命令来运行服务器:

sudo python app1c.py 

这会设置服务器,我可以很好地访问我的xml文件。但是,当我关闭Windows机器和PuTTY会话时,Flask服务器会关闭!

如何设置它以便即使Windows机器关闭时Flask服务器也会继续?

我在Flask文档中读到了:

  

虽然重量轻且易于使用,但Flask的内置服务器不适合生产,因为它不能很好地扩展,默认情况下一次只能提供一个请求。

然后他们继续举例说明如何将Flask应用程序部署到WSGI服务器!鉴于我正在处理的简单应用,这是否必要?

7 个答案:

答案 0 :(得分:6)

您有多种选择:

  1. 简单:使用&取消整个过程,例如:
  2.   

    $ sudo python app1c.py&

    1. 中:使用apt-get install tmux安装tmux 启动tmux并像以前一样启动你的应用程序并使用CTRL + B分离。

    2. 络合剂: 阅读 run your flask script with a wsgi server - uwsgi, gunicorn, nginx.

答案 1 :(得分:4)

使用:

$sudo python app1c.py >> log.txt 2>&1 &

  1. ">> log.txt的"将所有stdout推送到log.txt文件中(您可以检查其中的应用程序日志)

  2. &#34 2 - ;&安培; 1"将所有stderr推送到log.txt文件中(这会将所有错误日志推送到log.txt中)

  3. "&安培;"最后使它在后台运行。

  4. 执行此命令后,您将立即获取进程ID,您可以使用该命令监视或验证它。

    $sudo ps -ef | grep <process-id>

    希望它有所帮助.. !!

答案 2 :(得分:3)

在此处https://www.npmjs.com/package/forever安装节点包 永久
然后使用

forever start -c python your_script.py

在后台启动脚本。稍后你可以使用

forever stop your_script.py

停止脚本

答案 3 :(得分:3)

您始终可以使用nohup作为后台进程来运行任何脚本。

nohup python script.py

这将在后台运行您的脚本,并且还将其日志附加在位于目录script.py为存储的nohup.out文件中。

请确保关闭终端,而不要按Ctrl +C。这将使它即使在注销时也可以在后台运行。

要停止运行,请再次SSH进入pi并运行ps -ef |grep nohupkill -9 XXXXX XXXX是pid,您将获得ps命令。

答案 4 :(得分:3)

最近压力很大,所以我决定深入。

pm2 start app.py --interpreter python3

将 PM2 用于此类情况。我还将它用于 NodeJs 应用程序和单个服务器上的 Python 应用程序。

答案 5 :(得分:1)

使用:

$ sudo nohup python app1c.py > 1.txt 2>&1 &

nohup允许运行命令/进程或shell脚本,可以在从shell注销后继续在后台运行。

&#34;&GT;&#34; 1.txt它输出到这个文件。

2&gt;&amp; 1将所有stderr移动到stdout。

和&amp;允许您在当前shell上运行后台命令/进程。

答案 6 :(得分:1)

我一直发现分离屏幕处理最适合此类用例。 跑: screen -m -d sudo python app1c.py