Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Python Django芹菜活动-获取;“找不到地址”;错误_Python_Django_Celery_Eventlet - Fatal编程技术网

Python Django芹菜活动-获取;“找不到地址”;错误

Python Django芹菜活动-获取;“找不到地址”;错误,python,django,celery,eventlet,Python,Django,Celery,Eventlet,我目前正在使用芹菜默认预处理进行并发,我想使用Eventlet 我尝试安装Eventlet并将其用于并发,但出现以下错误: [2017-01-01 04:11:14,233: ERROR/MainProcess] consumer: Cannot connect to amqp://application:**@rabbit:5672//: [Errno -2] No address found. 但它在默认的预工作中运行良好,我可以异步执行作业 我目前正在使用django 1.10和芹菜4.

我目前正在使用芹菜默认预处理进行并发,我想使用Eventlet

我尝试安装Eventlet并将其用于并发,但出现以下错误:

[2017-01-01 04:11:14,233: ERROR/MainProcess] consumer: Cannot connect to amqp://application:**@rabbit:5672//: [Errno -2] No address found.
但它在默认的预工作中运行良好,我可以异步执行作业

我目前正在使用django 1.10和芹菜4.0.1

 -------------- celery@worker v4.0.1 (latentcall)
---- **** ----- 
--- * ***  * -- Linux-4.4.0-57-generic-x86_64-with-Ubuntu-16.04-xenial 2017-01-01 03:59:11
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         fivefrets:0x7f97ca281a58
- ** ---------- .> transport:   amqp://fivefrets:**@rabbit:5672//
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 10 (eventlet)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
            .> celery           exchange=celery(direct) key=celery
有人能帮忙吗?我在谷歌上查不到答案

如果有任何问题,请告诉我

不确定我缺少了什么

“找不到地址”看起来像是DNS解析错误。如果可以解析rabbitmq服务器的地址,则问题可能出在Eventlet上

如果您使用的是Eventlet 0.20.0,看起来可能会破坏DNS解析。见:


如果是这种情况,也许您可以使用不同版本的eventlet,比如
pip安装--upgrade eventlet==0.19.0
pip安装--upgrade eventlet==0.20.1

如果您使用
eventlet==0.20.0
遇到错误,则表示您的配置不正确
/etc/resolv.conf
带有
搜索域
,但您正在发出一个相对主机名
rabbit
,对于该主机名,正确的DNS解析只能尝试
rabbit.domain
查询名称服务器

适当的解决方案选项:

  • .local
    域引入您的网络,将resolv.conf、DNS记录和应用程序配置更改为
    rabbit.local
    。综合考虑,这是最好的办法
  • /etc/resolv.conf
  • 在应用程序配置中的单级主机名中添加尾随点。-这使完全限定的主机名始终能够正确解析

对于不太完美的方式,升级
eventlet>=0.20.1
它包含一个补丁,该补丁将尝试顶级查询,就像它们完全合格一样(在本例中为
rabbit.

谢谢。。!pip安装中的解决方案—它工作正常。感谢您为我指出正确的问题,请将其更改为
eventlet==0.20.1