Django如何将外部模块作为守护程序运行

时间:2018-10-07 09:54:27

标签: 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管理任务上启动守护程序。

有人解决了这个问题吗? 预先谢谢你。

1 个答案:

答案 0 :(得分:1)

就我而言,我使用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