2016-02-11 1 views
0

Мой settings.pyДжанго вопрос сельдерей RabbitMQ: "ПРЕДУПРЕЖДЕНИЕ/MainProcess] Получено и удален неизвестное сообщение Wrong назначения"

CELERY_ACCEPT_CONTENT = ['json', 'msgpack', 'yaml', 'pickle', 'application/json'] 
CELERY_TASK_SERIALIZER = 'json' 
CELERY_RESULT_SERIALIZER = 'json' 
CELERY_RESULT_BACKEND = 'djcelery.backends.cache:CacheBackend' 

celery.py код

from __future__ import absolute_import 
import os 
from celery import Celery 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'webapp.settings') 
from django.conf import settings 
app = Celery('webapp') 
app.config_from_object('django.conf:settings') 
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 


@app.task(bind=True) 
def debug_task(self): 
    print('Request: {0!r}'.format(self.request)) 

порядковый номер

from __future__ import absolute_import 
from celery.utils.log import get_task_logger 
from celery import shared_task 
import datetime 

logger = get_task_logger(__name__) 

@shared_task 
def sample_code(): 
    logger.info("Run time:" + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))) 
    return None 

На скорлупе я импортирующей и работает как "sample_code.delay()"

Полный стек ошибка:

[2016-02-12 00:28:56,331: WARNING/MainProcess] Received and deleted unknown message. Wrong destination?!? 

The full contents of the message body was: body: '\x80\x02}q\x01(U\x07expiresq\x02NU\x03utcq\x03\x88U\x04argsq\x04]q\x05U\x05chordq\x06NU\tcallbacksq\x07NU\x08errbacksq\x08NU\x07tasksetq\tNU\x02idq\nU$f02e662e-4eda-4180-9af4-2c8a1ceb57c4q\x0bU\x07retriesq\x0cK\x00U\x04taskq\rU$app.tasks.sample_codeq\x0eU\ttimelimitq\x0fNN\x86U\x03etaq\x10NU\x06kwargsq\x11}q\x12u.' (232b) 
{content_type:u'application/x-python-serialize' content_encoding:u'binary' 
    delivery_info:{'consumer_tag': u'None4', 'redelivered': False, 'routing_key': u'celery', 'delivery_tag': 8, 'exchange': u'celery'} headers={}} 

Пожалуйста, дайте мне знать, где Я ошибаюсь

ответ

1

Как это было решено для меня изменения в команде для запуска сельдерей

Он дает вопрос для:

celery -A <app_path> worker --loglevel=DEBUG 

Но это работает без проблем, если мы используем:

celery -A <app_path> worker -l info 

Может быть полезно для ot если они столкнутся с той же проблемой.

+1

Изменение уровня журнала для отладки будет просто подавлять оператор журнала, будет ли он фактически обрабатывать сообщение? – vedarthk