繁体   English   中英

如何在后台运行 Flask Server

[英]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 的后台运行命令/进程。

您有多种选择:

  1. 简单:使用&分离进程,例如:

$ sudo python app1c.py &

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

  2. 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 &

  1. “>> log.txt”将所有标准输出推送到 log.txt 文件中(您可以检查其中的应用程序日志)

  2. "2>&1" 将所有 stderr 推送到 log.txt 文件中(这会将所有错误日志推送到 log.txt 中)

  3. 末尾的“&”使它在后台运行。

执行此命令后,您将立即获得进程 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 nohupkill -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM