无法检查芹菜队列



我已经无法使用 Celery 中的 inspect() 函数来查看队列中的活动和保留项目。它总是返回None而不是返回类似{u'celery@mymachine': []}的东西。

这始于我将Docker从使用python:3.6-alpine更改为python:3.6之后,但是现在,即使我恢复到alpine,我仍然会收到这种行为。我已经尝试了这里建议的所有内容:芹菜计划列表返回 没有,但似乎也不起作用。

我在下面包含一个最小的例子来显示我的问题

如果有人有任何想法可能导致这种情况,我将不胜感激

Docker文件:

FROM python:3.6-alpine
ENV CELERY_BROKER_URL redis://redis:6379/0
ENV CELERY_RESULT_BACKEND redis://redis:6379/0
ENV C_FORCE_ROOT true
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD celery -A celeryExample worker --concurrency=1 --loglevel=info 

Docker-compose:

version: '3'
services:
redis:
image: redis
ports:
- 6379:6379
celery: 
build: 
context: .
dockerfile: Dockerfile.celery
depends_on:
- redis
volumes: 
- .:/usr/src/app    

要求.txt

celery

celeryExample.py

from celery import Celery
import celeryconfig
broker_url = os.environ.get('broker_url', 'redis://localhost:6379/0'),
result_backend = os.environ.get('result_backend', 'redis://localhost:6379/0')
app = Celery('server', broker = broker_url,
backend = result_backend)
app.config_from_object(celeryconfig)
@app.task
def add(x, y):
return x + y

芹菜配置:

worker_prefetch_multiplier = 1
worker_concurrency  = 1

active.py:

from celery import Celery
import celeryconfig
from celery.task.control import inspect
import os
broker_url = os.environ.get('broker_url', 'redis://localhost:6379/0'),
result_backend = os.environ.get('result_backend', 'redis://localhost:6379/0')
app = Celery('server', broker = broker_url,
backend = result_backend)
app.config_from_object(celeryconfig)
i = inspect()
q = i.active()
print(q)

这发生在我今天身上,罪魁祸首是最近发布的 kombu==4.6.4 版本

https://github.com/celery/kombu/issues/1081

我将 kombu==4.6.3 添加到我的需求文件中,因此它覆盖了芹菜安装的那个,它又开始为我工作,希望对您有所帮助!

相关内容

  • 没有找到相关文章

最新更新