[英]How to run Flask Server in the background
我已经在我的 Rapsberry Pi 上设置了 Flask,我使用它的唯一目的是充当我使用 Python 脚本创建的 xml 文件的服务器,以将数据传递给 iPad 应用程序 (iRule)。
我的 RPI 设置为无头,我的访问是使用 PuTTY、WinSCP 和 TightVNC 查看器通过 Windows 10 进行的。
我通过打开终端窗口和以下命令来运行服务器:
sudo python app1c.py
这设置了服务器,我可以很好地访问我的 xml 文件。 但是,当我关闭 Windows 机器和 PuTTY 会话时,Flask 服务器关闭了!
如何设置它以便 Flask 服务器即使在 Windows 机器关闭时也能继续运行?
我在 Flask 文档中读到:
虽然轻量级且易于使用,但 Flask 的内置服务器不适合生产,因为它不能很好地扩展并且默认一次只处理一个请求。
然后他们继续举例说明如何将 Flask 应用程序部署到 WSGI 服务器! 鉴于我正在处理的简单应用程序,这是否有必要?
使用:
$ sudo nohup python app1c.py > log.txt 2>&1 &
nohup
允许运行命令/进程或 shell 脚本,这些脚本可以在您从 shell 注销后继续在后台运行。
> log.txt
:它将输出转发到此文件。
2>&1
:将所有 stderr 移动到 stdout。
最后的&
允许您在当前 shell 的后台运行命令/进程。
您有多种选择:
&
分离进程,例如:$ sudo python app1c.py &
中:使用apt-get install tmux
启动 tmux 并像以前一样启动您的应用程序,然后使用 CTRL+B 分离。
Complexer:阅读使用 wsgi 服务器运行您的烧瓶脚本 - uwsgi、gunicorn、nginx。
在这里永远安装 Node 包https://www.npmjs.com/package/forever
然后使用
forever start -c python your_script.py
在后台启动您的脚本。 稍后您可以使用
forever stop your_script.py
停止脚本
使用:
$sudo python app1c.py >> log.txt 2>&1 &
“>> log.txt”将所有标准输出推送到 log.txt 文件中(您可以检查其中的应用程序日志)
"2>&1" 将所有 stderr 推送到 log.txt 文件中(这会将所有错误日志推送到 log.txt 中)
末尾的“&”使它在后台运行。
执行此命令后,您将立即获得进程 ID,您可以使用它来监视或验证它。
$sudo ps -ef | grep <process-id>
希望它有帮助.. !!
我一直发现分离屏幕进程最适合此类用例。 运行: screen -m -d sudo python app1c.py
您始终可以使用 nohup 将任何脚本作为后台进程运行。
nohup python script.py
这将在后台运行您的脚本,并将其日志附加在 nohup.out 文件中,该文件将位于目录 script.py is store 中。
确保您关闭终端而不是按 Ctrl + C。这将允许它在您注销时在后台运行。
要阻止它运行,再次 ssh 到 pi 并运行ps -ef |grep nohup
和kill -9 XXXXX
其中 XXXX 是您将获得 ps 命令的pid。
最近压力很大,所以我决定深入。
pm2 start app.py --interpreter python3
将 PM2 用于此类事情。 我还将它用于 NodeJs 应用程序和单个服务器上的 Python 应用程序。
我试图在我的 GitHub CI 中运行我的 Flask 应用程序进行测试,并且我运行该应用程序的步骤一直被卡住,因为它没有发布命令行
我发现的最佳解决方案是此处结合其他两个响应:
nohup python script.py &
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.