我在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服务器!鉴于我正在处理的简单应用,这是否必要?
答案 0 :(得分:6)
您有多种选择:
&
取消整个过程,例如:$ sudo python app1c.py&
中:使用apt-get install tmux
安装tmux
启动tmux并像以前一样启动你的应用程序并使用CTRL + B分离。
络合剂: 阅读 run your flask script with a wsgi server - uwsgi, gunicorn, nginx.
答案 1 :(得分:4)
使用:
$sudo python app1c.py >> log.txt 2>&1 &
">> log.txt的"将所有stdout推送到log.txt文件中(您可以检查其中的应用程序日志)
&#34 2 - ;&安培; 1"将所有stderr推送到log.txt文件中(这会将所有错误日志推送到log.txt中)
"&安培;"最后使它在后台运行。
执行此命令后,您将立即获取进程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 nohup
和kill -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