2010-07-08 57 views
1

我在我的可重用django应用程序中获得了一个自定义命令,我想要启动守护程序服务,然后返回,从而使服务继续运行。使用djangos manage.py自定义命令启动守护程序服务?

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

我希望能够到:

./manage.py startservice 

它踢我的服务和回报。然后在相同的外壳:

./manage.py runserver 

,并开始在该5秒内通过在后台和处理运行的服务拾起一个特定的数据库表添加条目。

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

任何提示或想法?

+0

请注意,芹菜可以使用Django的ORM和数据库,而不是RabbitMQ,如果这是你的意思,依靠太多其他的东西。 – asksol 2010-07-08 13:28:09

回答

2

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

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

0

为什么你想开始服务作为separte过程?

在与runserver相同的进程中运行在线程中。

+0

嗯...你能给我一个简单的例子,如何做到这一点?没有任何使用线程的经验。我计划至少启动两个以上的服务(一个ftpserver和一个虚拟文件系统),所以如果我可以使用线程来管理它们,那将会很好。 – Weholt 2010-07-13 10:59:10

+0

这里的基本例子。 进口线程 高清工人(): #这里做了一些有益的工作 threading.Thread(目标=工作人员)。开始() 阅读'threading'模块的文档。 – 2010-07-14 06:56:10