我在我的可重复使用的django应用程序中有一个自定义命令,我想启动一个守护程序服务然后返回,让服务继续运行。
我已经将我的服务实现为一个带有start方法的简单类。当调用start时,它在一个永久循环中运行,休眠10秒,然后使用django orm检查项目settings.py文件中配置的数据库,检查给定文件夹中的条目。
我希望能够:
./manage.py startservice
踢我的服务并返回。然后在同一个shell中:
./manage.py runserver
并开始在特定数据库表中添加条目,该表在5秒内被后台运行的服务选中并进行处理。
我已经看过芹菜更多基于消息队列的方法,但它依赖于太多其他东西。重要的是,整个事情遵循django的可重用应用程序模式。
任何提示或想法?
答案 0 :(得分:2)
我有一个库的开头django-initd
来处理这个问题:请参阅the project on GitHub。
Django实际上包含一个用于守护自身进程的实用程序,在django.utils.daemonize
中,我的库负责启动/关闭,记录以及与管理命令的交互。我很想知道它对你有用。
答案 1 :(得分:0)
为什么要将服务作为单独的流程启动?
在与运行服务器相同的进程中运行一个线程。