celery启动异常: ERROR/MainProcess] consumer: Cannot connect to redis:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了celery启动异常: ERROR/MainProcess] consumer: Cannot connect to redis:相关的知识,希望对你有一定的参考价值。

参考技术A 没反应应该是你启动服务端的时候没有带上配置文件。你可以./redis-server redis.conf
你配置好了,但要重新启动redis,如果还是报一样的错误,很可能是没有启动到配置文件,所以需要真正的和配置文件启动需要:

在redis.conf文件的当前目录下

如果还是所某个端口已在使用,那么可能是有 后台程序在占用该端口,需要kill 掉该程序,重新带上配置文件。./redis-server redis.conf启动。
将含有”redis”关键词的进程杀死:

Celery 任务在 Django 测试中没有抛出异常

【中文标题】Celery 任务在 Django 测试中没有抛出异常【英文标题】:Celery tasks not throwing exception in Django Tests 【发布时间】:2015-01-17 17:35:07 【问题描述】:

我的 Django 测试中包含了几个 celery 任务。不幸的是,通过 .delay() 调用任务时不会抛出异常。我将 CELERY_ALWAYS_EAGER 设置为 True。

tasks.py

import celeryapp as app

@app.task()
def exception_task():
    print 'CELERY_ALWAYS_EAGER:', app.conf['CELERY_ALWAYS_EAGER']
    raise Exception('foo')

tests.py

def test_exception_in_task(self):
        from tasks import exception_task
        exception_task.delay()

输出

CELERY_ALWAYS_EAGER: True
.
----------------------------------------------------------------------
Ran 1 test in 0.686s

当删除 .delay 时,测试退出并出现预期的错误:

ERROR: test_exception_in_task
Exception: foo

版本

celery==3.1.4
Django==1.6.4

【问题讨论】:

【参考方案1】:

似乎我还必须将 CELERY_EAGER_PROPAGATES_EXCEPTIONS 设置为 True。

【讨论】:

这仍然适用于 Celery 5。【参考方案2】:

在celery 4.0下,我不得不使用CELERY_TASK_EAGER_PROPAGATES

【讨论】:

以上是关于celery启动异常: ERROR/MainProcess] consumer: Cannot connect to redis:的主要内容,如果未能解决你的问题,请参考以下文章

Django:djcelery Import error from celery import current_app as celery in virtualenv

如何使用 celery-beat 启动任务?

celery正常启动后能收到任务但不执行任务的解决办法

错误:无法加载 celery 应用程序。未找到模块任务

docker下的celery

Django使用Celery异步任务队列