Django Celery 守护进程不起作用



这是我的芹菜应用程序配置:

from __future__ import absolute_import
from celery import Celery
import os
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tshirtmafia.settings')
app = Celery('tshirtmafia')
app.conf.update(
    CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
)
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

settings.py:

INSTALLED_APPS:

'kombu.transport.django',
'djcelery',

还有:

BROKER_URL = 'django://'

这是我的任务:

@shared_task
def test():
    send_mail('nesamone bus', 'Files have been successfully generated.', 'marijus.merkevicius@gmail.com',
    ['marijus.merkevicius@gmail.com'], fail_silently=False)

现在,当我在本地运行python manage.py celeryd,然后在本地从shell运行test.delay()时,它就可以工作了。

现在我正在尝试部署我的应用程序。当使用完全相同的配置时,我尝试打开python manage.py celeryd,而在其他窗口中打开shell并运行测试任务,它不起作用。

我还尝试过设置这样的后台守护程序:

/etc/default/celeryd配置:

# Name of nodes to start, here we have a single node
CELERYD_NODES="w1"
# or we could have three nodes:
#CELERYD_NODES="w1 w2 w3"
# Where to chdir at start. (CATMAID Django project dir.)
CELERYD_CHDIR="/home/tshirtnation/"
# Python interpreter from environment. (in CATMAID Django dir)
ENV_PYTHON="/usr/bin/python"
# How to call "manage.py celeryd_multi"
CELERYD_MULTI="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryd_multi"
# How to call "manage.py celeryctl"
CELERYCTL="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryctl"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=1"
# Name of the celery config module.
CELERY_CONFIG_MODULE="celeryconfig"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"

我使用默认的celener/etc/init.d/celeryd脚本。

所以基本上看起来像是celeryd开始了,但没有起作用。不知道如何调试它以及可能出现的问题。

如果您还需要其他东西,请告诉我。

Celery在Django健壮系统中变成了一个非常任性的孩子。了解问题原因的初始数据太少。Celery守护进程失败的最常见原因是文件系统权限。但为了澄清我尝试的原因:

  1. django项目的用户所有者从命令行启动芹菜:

    芹菜-项目工作人员-l信息

如果工作正常,继续

  1. 在口头模式下以root用户的身份启动芹菜,就像即将成为的守护进程一样:

    sudo sh-x/etc/init.d/celeryd启动

这将显示守护程序脚本的大多数问题——使用的是celener用户和组,但不是全部问题,不幸的是:权限失败是不可见的。

我的小评论。通常Celery由自己的celeb用户启动,django项目由另一个用户启动。在与芹菜和系统进行了长时间的斗争后,我拒绝了芹菜用户的请求,并将芹菜流程归django项目用户所有。

而且。。不要忘记启动一次

update-rc.d celerybeat defaults
update-rc.d celeryd defaults

这是为Ubuntu守护进程启动,当然。

祝好运

相关内容

  • 没有找到相关文章

最新更新