【发布时间】:2014-08-12 13:46:24
【问题描述】:
我正在尝试在我的 Django 项目中使用 Celery。和往常一样,我搜索了一些东西,阅读了一些关于相同内容的 SOF 问题,一些博客,当然还有官方文档。
但在 django 中将 celery 作为服务运行时非常令人困惑。我没有找到任何来源。
一个带有一个应用程序的简单 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/startlike
PS:正如我所说,我读过一些 SOF 线程,其中许多人说不要使用crontab。那我应该用什么?这是安全问题吗?
【问题讨论】:
-
可以说,这属于超级用户。为什么不想在守护进程模式下运行?
-
Nancy 如果您想选择重新启动/启动/停止等,您是否看过主管或马戏团(mozilla)。这将允许您运行
python manage.py celeryd --verbosity=2 --loglevel=DEBUG并且仍然可以轻松地为其调用重新启动。更多关于supervisord.org 或circus.readthedocs.org/en/0.11.1
标签: python django celery django-celery djcelery