芹菜作为Django服务

时间:2014-08-12 13:46:25

标签: python django celery django-celery djcelery

我正在尝试在我的Django项目中使用Celery。像往常一样,我搜索了一些东西,阅读了几个关于同一个,几个博客,当然还有官方文档的SOF问题。

但是当它在django中运行芹菜作为服务时它非常令人困惑。我没有找到任何来源。

一个带有一个App的简单django项目。在这个App文件夹中有一个文件tasks.py,其中包含我的所有任务(现在它只是一个任务)。

tasks.py

from celery.task.schedules import crontab  
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(minute="*/45"))
def mytask():
    #some stuff to do
    ...
    # return a value

这些是我的设置配置

settings.py

from __future__ import absolute_import
import djcelery

djcelery.setup_loader()

BROKER_URL = "amqp://user:user@localhost:5672/vhost"
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_BEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

'djcelery'已添加到INSTALLED_APS

现在如果我想运行Celery worker,我必须在screen / tmux

中使用此命令

python manage.py celeryd --verbosity=2 --loglevel=DEBUG -B

python manage.py celeryd --verbosity=2 --loglevel=DEBUG &

我想知道它是否可以运行它就像我们运行nginx,uwsgi,mysql等服务一样。我不想在守护进程模式下运行。我怎么能这样做?

主要是我想做sudo service celery restart/reload/stop/start喜欢

PS:正如我所说,我读过几个SOF主题,其中很多人都说不要使用crontab。那我应该用什么?这是安全问题吗?

1 个答案:

答案 0 :(得分:0)

我建议阅读the documentations at http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html,其中提供了如何使其作为服务运行的示例(针对多种不同的服务样式)。请注意,当您执行service blah start时,这将转到init.d / blah并运行该脚本。通常情况下,确实会将应用程序作为守护程序运行(如果您不希望在守护程序模式下运行,请随时编辑)。另请注意,如果您正在使用init.d(例如,使用centos 6或类似功能; centos 7已移至systemd IIRC),您还可以使用chkconfig将芹菜服务配置为在重启时启动等。