Python Django如何作为守护进程运行外部模块
有没有正确的方法从Django框架启动无限任务? 我需要运行一个MQTT客户机(基于Paho)和一个Python PID实现 我想使用Django作为“Orhestrator”,因为我只想在Django运行时启动守护进程 我使用django是因为它创建RESTAPI和ORM层的简单性 我找到的唯一方法(在github上)是修改Python Django如何作为守护进程运行外部模块,python,django,python-daemon,Python,Django,Python Daemon,有没有正确的方法从Django框架启动无限任务? 我需要运行一个MQTT客户机(基于Paho)和一个Python PID实现 我想使用Django作为“Orhestrator”,因为我只想在Django运行时启动守护进程 我使用django是因为它创建RESTAPI和ORM层的简单性 我找到的唯一方法(在github上)是修改\uuuu init\uuuuuuu.py,包括我的外部模块--> 这不适合我,因为它会在每个django管理任务上启动守护进程 有人已经解决了这个问题吗? 提前感谢您。就
\uuuu init\uuuuuuu.py
,包括我的外部模块-->
这不适合我,因为它会在每个django管理任务上启动守护进程
有人已经解决了这个问题吗?
提前感谢您。就我而言,我使用daemonize我的django管理命令 由于我的django项目都在virtualenv中运行,因此在运行管理命令之前,我创建了一个脚本来初始化virtualenv: /home/cocover/run\u 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/cocover.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
WSGI应用程序设计为在请求/响应周期中运行。WSGI服务器通常会在工作线程和进程中运行许多这样的周期,它会根据需要创建和处理这些线程和进程。因此,使用infinte单一任务是违反设计的。您可能需要考虑一个具有多个进程的设计,每个客户端实例都在运行,其中包括客户端的工作人员随时可能丢失。