Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在后台运行Flask服务器_Python_Flask_Raspberry Pi - Fatal编程技术网

Python 如何在后台运行Flask服务器

Python 如何在后台运行Flask服务器,python,flask,raspberry-pi,Python,Flask,Raspberry Pi,我已经在我的Rapsberry Pi上设置了Flask,我使用它的唯一目的是充当一个xml文件的服务器,我用Python脚本创建了一个xml文件,用于将数据传递到iPad应用程序(iRule) 我的RPI设置为无头,我的访问权限是使用PuTTY、WinSCP和TightVNC查看器的Windows 10 我通过打开终端窗口和以下命令来运行服务器: sudo python app1c.py 这设置了服务器,我可以很好地访问我的xml文件。但是,当我关闭Windows机器和PuTTY会话时,Fl

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

我的RPI设置为无头,我的访问权限是使用PuTTY、WinSCP和TightVNC查看器的Windows 10

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

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

如何设置它,使Flask服务器即使在Windows计算机关闭时也能继续运行

我在烧瓶文档中读到:

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


然后,他们继续给出如何将Flask应用程序部署到WSGI服务器的示例!考虑到我正在处理的简单应用程序,这是否必要?

您有多种选择:

  • 简单:使用
    终止流程,例如:
  • $sudo python app1c.py&

  • 中等:安装tmux时使用
    apt get install tmux
    启动tmux并像以前一样启动应用程序,然后使用CTRL+B分离

  • 复合器: 阅读


  • 在此处安装节点包永久
    然后使用

    forever start -c python your_script.py
    
    在后台启动脚本。以后你可以用

    forever stop your_script.py
    
    要停止脚本,请使用:

    $ sudo nohup python app1c.py > log.txt 2>&1 &
    
    nohup
    允许运行命令/进程或shell脚本,从shell注销后可以在后台继续运行

    >log.txt
    :它将输出用于此文件

    2>&1
    :将所有的stderr移动到stdout

    最后的
    &
    允许您在当前shell的后台运行命令/进程。

    使用:

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

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

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

  • 结尾的“&”使其在后台运行

  • 您将在执行此命令后立即获得进程id,您可以使用该命令监视或验证进程id

    $sudo ps-ef|grep


    希望对你有帮助

    我总是发现分离屏幕过程最适合这样的用例。 运行:
    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是pid,您将获得ps命令。

    最近一直很紧张,所以我决定深入研究

    pm2 start app.py --interpreter python3
    

    用PM2来做类似的事情。我还将其用于单台服务器上的NodeJs应用程序和Python应用程序。

    我在Hope回答了同样的问题,希望它能帮助您。请使用该链接解释此代码的工作原理,而不仅仅是给出代码,因为解释更有可能帮助未来的读者。另见。很好的回答,很有魅力。它与这个关于如何在flask服务器处于后台模式时关闭它的问题/答案非常匹配。如果其他人想知道:不需要
    sudo
    Yes在后台运行任何进程的最简单方法在节点包中运行python代码不是很明智吗?