django - Rabbitmq celeryd celerybeat 不作为守护进程在生产中执行任务

标签 django centos daemon rabbitmq celery

上周我在我的生产系统上安装了 RabbitMQ 和 Celery,在我的本地开发人员上进行了测试并且一切正常。

我感觉我的任务没有在生产环境中执行,因为我有大约 1200 个任务仍在队列中。

我运行 CentOS 5.4 安装程序,使用 celerydcelerybeat 守护进程和 WSGI 我已经导入了 wsgi 模块。

当我运行时,/etc/init.d/celeryd start 我得到以下响应

[root@myvm myproject]# /etc/init.d/celeryd start
celeryd-multi v2.3.1
> Starting nodes...
    > w1.myvm.centos01: OK

当我运行 /etc/init.d/celerybeat start 时,我得到以下响应

[root@myvm fundedmyprojectbyme]# /etc/init.d/celerybeat start
Starting celerybeat...

因此从输出来看,项目似乎已成功执行 - 尽管在查看队列时,它们似乎只得到了比执行更多的东西。

现在如果我执行相同的执行,但使用 django 的 manage.py 代替 ./manage.py celeryd./manage.py celerybeat 任务立即开始得到处理。

我的/etc/default/celeryd

# Where to chdir at start.
CELERYD_CHDIR="/www/myproject/"

# How to call "manage.py celeryd_multi"
CELERYD_MULTI="$CELERYD_CHDIR/manage.py celeryd_multi"

# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8"

# 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"

我的/etc/default/celerybeat

# Where the Django project is.
CELERYD_CHDIR="/www/myproject/"

# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"

# Path to celeryd
CELERYD="/www/myproject/manage.py celeryd"

# Path to celerybeat
CELERYBEAT="/www/myproject/manage.py celerybeat"

# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"

/celeryd 和/celerybeat 的/etc/init.d 文件基于 generic scripts

我是否遗漏了部分配置???

最佳答案

我曾经遇到过一种情况,我必须将“python”作为前缀添加到 CELERYD_MULTI 变量。

# How to call "manage.py celeryd_multi"
CELERYD_MULTI="python $CELERYD_CHDIR/manage.py celeryd_multi"

无论出于何种原因,我的 manage.py 脚本都无法正常执行(即使我有 chmod +x 并正确配置了我的 shebang。)您可以试试看它是否有效。

关于django - Rabbitmq celeryd celerybeat 不作为守护进程在生产中执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7384930/

相关文章:

ruby-on-rails - 没有这样的文件或目录 - config/environment.rb phusion guest apache centos 6.3 Rails

linux - Carbon 4.0.1 (BAM 2.0) 作为 Linux 守护进程

python - 如何比较 Django 模板中的日期

python - Django-tenant-schemas 和 GeoDjango 一起

Django unittest assertRaise自定义错误

python - 如何使用 django-admin.py 运行特定测试?

svn - CentOS 5.9 上的 subversion 1.7 可以吗?还是 1.6 是最新的稳定版?

PHP 使用与系统中安装的不同的curl 版本

Python 服务/守护进程

php - 在某些情况下无法从 PHP 停止 C 守护进程