Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我用芹菜、Redis和Django有问题_Django_Redis_Task_Celery_Django Settings - Fatal编程技术网

我用芹菜、Redis和Django有问题

我用芹菜、Redis和Django有问题,django,redis,task,celery,django-settings,Django,Redis,Task,Celery,Django Settings,我用芹菜、Redis和Django有问题 我试图用它们来创建一个简单的任务 但是,任务执行后不久会发生错误 为了更好地理解,我将在下面指定代码的一部分。感谢您的关注 CELERY_BROKER_URL = 'redis://:password@REDIS:6379/0' CELERY_RESULT_BACKEND = 'redis://REDIS:6379/0' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZ

我用芹菜、Redis和Django有问题

我试图用它们来创建一个简单的任务

但是,任务执行后不久会发生错误

为了更好地理解,我将在下面指定代码的一部分。感谢您的关注

CELERY_BROKER_URL = 'redis://:password@REDIS:6379/0'
CELERY_RESULT_BACKEND = 'redis://REDIS:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/Recife'
CELERY_BEAT_SCHEDULE = {
    'task-send': {
        'task': 'app.tasks.task_send_email',
        'schedule': crontab(hour=5, minute=44)
    }
}
芹菜

[config]
app:         sistema:0x7fa254a5d6f4
transport:   redis://:**@redis:6379/0
results:     redis://redis:6379/0
concurrency: 1 (prefork)
task events: OFF (enable -E to monitor tasks in this worker)

[queues]
exchange=celery(direct) key=celery

[tasks]
app.tasks.task_send_email

INFO/MainProcess] Connected to redis://:**@redis:6379/0
INFO/MainProcess] mingle: searching for neighbors
INFO/MainProcess] mingle: all alone
执行任务后,会发生错误

RuntimeWarning: Exception raised outside body: ResponseError('NOAUTH Authentication required.',):

任务尚未完成。

考虑到您的结果后端URL没有身份验证令牌,并且您使用的服务器显然与预期的服务器相同,我认为发生的情况如下:您可以成功运行任务(因为后端URL是正确的),但一旦任务运行,芹菜会尝试存储结果(在结果后端中),但由于结果后端URL无效(
redis://redis:6379/0
,应该类似于代理,即,
redis://:***@redis:6379/1
-使用不同的数据库名称)芹菜抛出异常,因为它无法连接到redis(
NOAUTH-Authentication-required
来自redis-server)

假设您的Redis服务器是
Redis.local
,您的Redis身份验证令牌是
my53cr3tt0ken
。您的芹菜配置应该有以下两个:

broker_url = "redis://:my53cr3tt0ken@redis.local:6379/0"
celery_result_backend = "redis://:my53cr3tt0ken@redis.local:6379/1"
请注意,我对代理和结果后端使用不同的数据库-我建议您也这样做


如果您的Redis加密通信,那么您应该使用
rediss://...

考虑到您的结果后端URL没有身份验证令牌,并且您使用的服务器显然与预期的相同,我认为发生的情况如下:您可以成功运行任务(因为后端URL是正确的),但一旦任务运行,芹菜会尝试存储结果(在结果后端),但由于结果后端URL无效(
redis://redis:6379/0
,应该类似于代理,即,
redis://:***@redis:6379/1
-使用不同的数据库名称)芹菜抛出异常,因为它无法连接到redis(
NOAUTH身份验证要求
来自Redis服务器)

假设您的Redis服务器是
Redis.local
,您的Redis身份验证令牌是
my53cr3tt0ken
。您的芹菜配置应该有以下两个:

broker_url = "redis://:my53cr3tt0ken@redis.local:6379/0"
celery_result_backend = "redis://:my53cr3tt0ken@redis.local:6379/1"
请注意,我对代理和结果后端使用不同的数据库-我建议您也这样做


如果您的Redis加密通信,那么您应该使用
rediss://...

我尝试了两种方法,但都没有成功。redis://:***@redis:6379/1和redis://:***@celerydb:6379/1必须通过芹菜\u BROKER\u URL='redis://:***@redis:6379/0'芹菜\u RESULT\u BACKEND='redis://REDIS:6379/1“?芹菜4.0及以上版本使用小写配置varibales。我已经更新了答案,为您提供了更多详细信息,看一看……我尝试了两种方法,但都没有成功。redis://:***@redis:6379/1和redis://:***@celerydb:6379/1必须通过芹菜\u BROKER\u URL='redis://:***@redis:6379/0'芹菜\u BACKEND='redis://REDIS:6379/1“?芹菜4.0以后版本使用小写配置varibales。我已更新了发誓要给你更多的细节,看看。。。