我正在尝试在我的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
喜欢
crontab
。那我应该用什么?这是安全问题吗?
答案 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将芹菜服务配置为在重启时启动等。