第1部分
我已经阅读并尝试了各种SO线程来使用Redis清除芹菜任务,但它们都没有工作。请让我知道如何使用Redis作为经纪人清除芹菜中的任务。
第2部分
另外,我有多个队列。我可以在项目目录中运行它,但是当妖魔化时,工作人员不接受任务。我仍然需要手动启动芹菜工人。我怎样才能消除它?
这是我的celerd conf。
# Name of nodes to start, here we have a single node
CELERYD_NODES="w1 w2 w3 w4"
CELERY_BIN="/usr/local/bin/celery"
# Where to chdir at start.
CELERYD_CHDIR="/var/www/fractal/parser-quicklook/"
# Python interpreter from environment, if using virtualenv
#ENV_PYTHON="/somewhere/.virtualenvs/MyProject/bin/python"
# How to call "manage.py celeryd_multi"
#CELERYD_MULTI="/usr/local/bin/celeryd-multi"
# How to call "manage.py celeryctl"
#CELERYCTL="/usr/local/bin/celeryctl"
#CELERYBEAT="/usr/local/bin/celerybeat"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8 -Q BBC,BGR,FASTCOMPANY,Firstpost,Guardian,IBNLIVE,LIVEMINT,Mashable,NDTV,Pandodaily,Reuters,TNW,TheHindu,ZEENEWS "
# Name of the celery config module, don't change this.
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="nobody"
#CELERYD_GROUP="nobody"
# Set any other env vars here too!
PROJET_ENV="PRODUCTION"
# Name of the projects settings module.
# in this case is just settings and not the full path because it will change the dir to
# the project folder first.
CELERY_CREATE_DIRS=1
第1部分已经提供了Celeryconfig。
这是我的proj目录结构。
project
|-- main.py
|-- project
| |-- celeryconfig.py
| |-- __init__.py
|-- tasks.py
如何使用队列进行妖魔化?我也在CELERYD_OPTS
中提供了队列。
有没有办法可以动态妖魔化芹菜中的队列数量?例如: - 我们有CELERY_CREATE_MISSING_QUEUES = True
来创建丢失的队列。是否有类似于守护芹菜队列的东西?
答案 0 :(得分:3)
celery purge
应足以清除redis中的队列。但是,您的工作人员将拥有自己的保留任务,并在您停止工作人员时将其发送回队列。所以,首先,停止所有工人。然后运行celery purge
。
答案 1 :(得分:0)
如果您有多个队列,celery purge
将清除默认队列。您可以这样指定要清除的队列:
celery purge -A proj -Q queue1,queue2
答案 2 :(得分:0)
作为第1部分(一种清除队列的编程解决方案)的回应,可以在以下链接celery.bin.purge docs中找到更多文档。此外,还有一个选项,可以通过向运行函数传递一个CALL
参数来指定要清除的队列。
PLsetopt