Aşağıdaki kod parçacığında, https://asdasdasdasd.vm:8080/v2/api-docs
'un mevcut olmadığı bir gerçeği biliyorum. Bir DNS araması başarısız olur. Ne yazık ki, get()
asla geri dönmüyor, yükseltmiyor ya da zaman aşımı vermiyor. Benim günlüklerimde sadece "A" var. A C D
veya A B D
beklerim. Ama sadece günlüklerinde A
'u görüyorum.Sunucu bulunamadığı sırada requests.get() neden yükseltilmez?
try:
sys.stderr.write("A")
resp = requests.get("https://asdasdasdasd.vm:8080/v2/api-docs", timeout=1.0)
sys.stderr.write("B")
except:
sys.stderr.write("C")
sys.stderr.write("D")
sys.stderr.flush()
return swag
(Yani URL yazı için arındırılmış değildir. Yani aslında bu soru üzerinde çalışırken kullanmaya çalışıyorum URL'sidir.) Ben burada eksik
?
EDIT - Zaman aşımını (1.0,1.0)
olarak belirtmeyi denedim ancak davranış değişmedi.
EDIT2 - Aşağıdaki önerilerde, kodumu python ve ipython konsollarından çalıştırdım. Kod beklediğim gibi davranır (ACD
). Elbette, gerçek uygulamamda, bu kodu komut satırından çalıştırmıyorum. Bunun nasıl önemli olduğunu bilmiyorum, ancak kodu içeren yöntem bir web hizmeti tarafından çalıştırılıyor. Özellikle, bir Swagger uç noktası. Tarayıcımla, Swagger dokümantasyonumuzu iade etmesi gereken bir son noktaya geldim. Bitiş noktası (flask_swagger kullanır) init_swagger(...)
'u çağırır. init_swagger()
, yöntemimi bir Swagger nesnesiyle çağırır. Bu kadar. Bunun nasıl önemli olduğunu söyleyemem. Metodumun dışındaki bir şeyin, istisnasız kullanımımla bir şekilde çatışabilmesi gerektiği bana mantıklı gelmiyor.
Düşünebildiğim tek şey, Swagger'ın istek sınıfı ile uğraşmasıdır. Ama şimdi yemek zamanı ve eve gidiyorum.
, çalıştığımda bir ConnectionError atar ... –
Ubuntu Trusty'de Python 2.7.6 ile istekleri 2.2.1 (veya 2.7.0) kullanarak, "ACD" alırım. – jwodder
Neden ABCD' veya ABD’yi bekliyorsunuz? Doğru olan 'ACD' olmalı ve kodunuzu çalıştırdığımda aldığım bu. – Vader