python - 后台多线程 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 &
似乎就足够了。
所以我想我已经有了我的问题的答案。但是,在这个主题上,这是首选且唯一的解决方案吗?
解决方案
这在很大程度上取决于您正在运行的特定 linux 变体,但一般来说,最好的方法是让系统的服务管理器处理它。在大多数情况下,这意味着 systemd。
创建服务配置文件-
[Unit]
Description=My Python Service
[Service]
Type=simple
ExecStart=/path/to/my/python/service.py
[Install]
WantedBy=multi-user.target
- 把它放在
/lib/systemd/system/
名称中,如mypythonapp.service
. - 运行
systemctl daemon-reload
以便 systemd 知道查找新文件。 - 运行
systemctl enable mypythonapp.service
告诉它在启动时运行应用程序。 - 运行
systemctl start mypythonapp.service
告诉它立即运行应用程序。
现在您的脚本将具有日志记录,当崩溃或系统重新启动时将重新启动,您不必手动启动它。
推荐阅读
- php - 寻找表单邮件脚本的 PHP 重定向代码
- dpdk - 如何使用 DPDK 传输大于 MTU 的数据?
- php - 试图通过访问设备的用户的 shell_exec 命令打开 Chromium 浏览器?
- django - Django多表连接使用ORM
- c# - OData v4 扩展语法返回错误“...属性 'ProductType' 不能在 $expand 查询选项中使用。”
- ionic-framework - Ionic 4:离子选择在 IOS 上效果不佳
- reactjs - 使用 Axios 在 ReactJS 中访问被 CORS 策略阻止的 XMLHttpRequest
- python - 如何使用 matplotlib 的颜色图初始化调色板?
- flutter - Flutter 中的命名路由如何消除重复?
- decimal - 电源查询舍入不正确,不正确向上或向下舍入