2017-01-01 53 views
3

我目前正在使用芹菜默認prefork併發性,我想使用Eventlet。Django芹菜Eventlet - 獲取「找不到地址」錯誤

我試圖安裝Eventlet,並用它的併發性,但我得到以下錯誤:

[2017-01-01 04:11:14,233: ERROR/MainProcess] consumer: Cannot connect to amqp://application:**@rabbit:5672//: [Errno -2] No address found. 

但它的工作好與默認的prefork的,我可以執行作業異步。

我目前使用Django 1.10和芹菜4.0.1

-------------- [email protected] 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 

任何人都可以幫助請,我不能得到答案了谷歌搜索。

如果有人有任何問題,請讓我知道。

不知道我缺少什麼

回答

1

「找不到地址」看起來像是DNS解析錯誤。如果您可以解析rabbitmq服務器的地址,則問題可能在於Eventlet。

如果您使用的是Eventlet 0.20.0,它看起來可能會破壞DNS解析。請參閱:https://github.com/nameko/nameko/issues/392

如果是這種情況,也許可以使用不同版本的eventlet,例如pip install --upgrade eventlet==0.19.0pip install --upgrade eventlet==0.20.1

+1

謝謝..!分辨率在https://github.com/nameko/nameko/issues/392 pip install -U https://github.com/eventlet/eventlet/archive/f266be30f5c3ff1889e9ac3f0bad698a49d40e99.zip –

+1

它的工作。感謝您將我指向正確的問題https://github.com/nameko/nameko/issues/392 –

+0

請將其更改爲'eventlet == 0.20.1' – temoto

0

如果您在eventlet==0.20.0上遇到該錯誤,則表示您的配置格式錯誤。 /etc/resolv.confsearch domain,但您要發佈的相對主機名爲rabbit,對此,正確的DNS解析必須嘗試僅向名稱服務器查詢rabbit.domain

妥善解決方案:

  • 介紹.local域到您的網絡,改變的resolv.conf,DNS記錄和應用的configs到rabbit.local。所有事情都考慮到了,這是最好的方法。
  • 從應用的configs rabbit./etc/resolv.conf
  • 添加尾隨點單級主機名刪除search線 - 這使得完全合格的主機名總是正確地解析

對於不完美的方式,升級eventlet>=0.20.1它包含補丁它嘗試頂級查詢,就好像它們完全合格(在這種情況下爲rabbit.