python - Django 如何将外部模块作为守护进程运行

标签 python django python-daemon

是否有从 Django 框架启动无限任务的正确方法? 我需要运行一个 MQTT 客户端(基于 Paho)和一个 Python PID 实现。

我想将 Django 用作“Orhestrator”,因为我只想在 Django 运行时启动守护进程。

我使用 django 因为它创建 Rest API 和 ORM 层很简单。

我发现(在 github 上)的唯一方法是修改 __init__.py,包括我的外部模块 --> How to use paho mqtt client in django? .

这不适合我,因为它会在每个 django 管理任务上启动守护进程。

有没有人已经解决了这个问题? 提前谢谢你。

最佳答案

就我而言,我使用supervisor守护我的 django 管理命令。

由于我的 django 项目都在 virtualenv 中运行,我创建了一个脚本来在运行管理命令之前初始化 virtualenv:

/home/cocoonr/run_standalone.sh

#/bin/bash
export WORKON_HOME=/usr/share/virtualenvs
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
workon cocoonr  # name of my virtualenv

django-admin "$@"

这是一个命令的主管配置示例

/etc/supervisor/conf.d/cocoonr.conf

[program:send_queued_mails_worker]
command=/bin/bash /home/cocoonr/run_standalone.sh send_queued_mails_worker
user=cocoonr
group=cocoonr
stopasgroup=true
environment=LANG=fr_FR.UTF-8,LC_ALL=fr_FR.UTF-8
stderr_logfile=/var/log/cocoonr/send_queued_mails_worker.err
stdout_logfile=/var/log/cocoonr/send_queued_mails_worker.log

关于python - Django 如何将外部模块作为守护进程运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687337/

相关文章:

django - Django Rest 框架中的表单

python - 守护进程 python 脚本后找不到守护进程

python - 是否有与 Ruby 的字符串插值等效的 Python?

python - django 和 mod_wsgi 有数据库连接问题

python - sys.exit 对多线程到底做了什么?

Python 的守护进程 PPID 不等于 1

Python 守护进程和 systemd 服务

python - 创建通常看起来像 float 的类对象

python - 如何从 Django GeoIP 中的纬度和经度获取地址?

python - 如何在 Django 中响应 ajax 请求