使用djangos manage.py自定义命令启动守护进程服务?

时间:2010-07-08 08:24:38

标签: python django service command

我在我的可重复使用的django应用程序中有一个自定义命令,我想启动一个守护程序服务然后返回,让服务继续运行。

我已经将我的服务实现为一个带有start方法的简单类。当调用start时,它在一个永久循环中运行,休眠10秒,然后使用django orm检查项目settings.py文件中配置的数据库,检查给定文件夹中的条目。

我希望能够:

./manage.py startservice

踢我的服务并返回。然后在同一个shell中:

./manage.py runserver

并开始在特定数据库表中添加条目,该表在5秒内被后台运行的服务选中并进行处理。

我已经看过芹菜更多基于消息队列的方法,但它依赖于太多其他东西。重要的是,整个事情遵循django的可重用应用程序模式。

任何提示或想法?

2 个答案:

答案 0 :(得分:2)

我有一个库的开头django-initd来处理这个问题:请参阅the project on GitHub

Django实际上包含一个用于守护自身进程的实用程序,在django.utils.daemonize中,我的库负责启动/关闭,记录以及与管理命令的交互。我很想知道它对你有用。

答案 1 :(得分:0)

为什么要将服务作为单独的流程启动?

在与运行服务器相同的进程中运行一个线程。