首页 > 解决方案 > 后台多线程 Python 应用程序

问题描述

我在 Raspberry Pi 上有一个 Python 应用程序myapp,前端控制面板由Dash制成。我在自己的线程中运行 Dash 应用程序,以便可以使用它来操作myapp中的一些设置。

当我通过 SSH 连接到 Raspberry Pi 时,我想在后台启动 Python 应用程序myapp,然后关闭远程 shell 窗口,让它旋转并执行它的操作。在写完这个问题后,我发现我必须根据这个使用nohup

nohup python path/to/myapp.py &

对于其他 python 应用程序只是

python path/to/other_app &

似乎就足够了。

所以我想我已经有了我的问题的答案。但是,在这个主题上,这是首选且唯一的解决方案吗?

标签: pythonlinuxraspberry-piplotly-dash

解决方案


这在很大程度上取决于您正在运行的特定 linux 变体,但一般来说,最好的方法是让系统的服务管理器处理它。在大多数情况下,这意味着 systemd。

创建服务配置文件-

[Unit]
Description=My Python Service

[Service]
Type=simple
ExecStart=/path/to/my/python/service.py

[Install]
WantedBy=multi-user.target
  1. 把它放在/lib/systemd/system/名称中,如mypythonapp.service.
  2. 运行systemctl daemon-reload以便 systemd 知道查找新文件。
  3. 运行systemctl enable mypythonapp.service告诉它在启动时运行应用程序。
  4. 运行systemctl start mypythonapp.service告诉它立即运行应用程序。

现在您的脚本将具有日志记录,当崩溃或系统重新启动时将重新启动,您不必手动启动它。


推荐阅读