2010-01-07 13 views
11

क्या किसी को GAE urlfetch का उपयोग करते समय निम्नलिखित अपवाद के साथ कोई अनुभव मिला है?GoogleAppEngine urlfetch टाइमआउट अपवाद

 DownloadError: ApplicationError: 2 timed out 

मैं एक HTTP पोस्ट अनुरोध भेजने की कोशिश कर रहा हूं। इस तरह:

 result = urlfetch.fetch('http://api.nathan.com:8080/Obj/', 
           method='POST', 
           payload=postdata, 
           deadline=10) 

मैंने अधिकतम (10 सेकंड) की समयसीमा निर्धारित करने का प्रयास किया है। कमांड लाइन से अनुरोध (कर्ल या httplib2 का उपयोग करके) एक सेकंड लेता है।

INFO  __init__.py:819] adding models from module __main__ 
INFO  __init__.py:867] added model Obj with type <class '__main__.Obj'> 
INFO  dev_appserver.py:3243] "POST /Obj HTTP/1.1" 200 - 
INFO  dev_appserver_index.py:205] Updating /path/to/index.yaml 

यहाँ उत्पादन जब मैं UrlFetch उपयोग करने का प्रयास है:

 [email protected] ~ $ time curl 
         -d "<Obj><a>1</a><b>n</b></Obj>" 
         http://api.nathan.com:8080/Obj/ 
     agd1c2VyYXBpcgoLEgRTZXNzGAIM  #< key returned by call 
     real 0m1.109s 
     user 0m0.003s 
     sys 0m0.009s 

यहाँ कर्ल अनुरोध (मैं appengine-आराम-सर्वर का उपयोग कर रहा) के लिए देव appserver से उत्पादन है:

ERROR __init__.py:388] ApplicationError: 2 timed out 
Traceback (most recent call last): 
    File "/path/to/webapp/__init__.py", line 507, in __call__ 
    handler.get(*groups) 
    File "/path/to/myapp/main.py", line 62, in get 
    result = urlfetch.fetch(...) 
    File "/path/to/urlfetch.py", line 241, in fetch 
    return rpc.get_result() 
    File "/path/to/apiproxy_stub_map.py", line 501, in get_result 
    return self.__get_result_hook(self) 
    File "/path/to/urlfetch.py", line 325, in _get_fetch_result 
    raise DownloadError(str(err)) 
DownloadError: ApplicationError: 2 timed out 
INFO  dev_appserver.py:3243] "GET/HTTP/1.1" 500 - 
INFO  dev_appserver.py:3243] "POST /Obj/ HTTP/1.1" 200 - 
+1

मेरा वर्तमान वर्कअराउंड यूआरएलफ़ेच कॉल को कोशिश/पास ब्लॉक को छोड़कर लपेटना है। – nafe

+0

क्या आप इस कॉल के दौरान सर्वर पर क्या हो रहा है यह देखने में सक्षम हैं? क्या यह सही ढंग से पेलोड को संसाधित कर रहा है और कुंजी वापस कर रहा है? पोस्टडाटा में क्या मूल्य है जो आपको लगता है? –

+0

हाय एलेक्स, सर्वर को POST अनुरोध मिल रहा है और यह कॉल के आधार पर एक नया ओब्जे बना रहा है। – nafe

उत्तर

12

विकास वेब सर्वर एकल-थ्रेडेड है। आप अपने आवेदन से अपने आप में चलने का अनुरोध नहीं कर सकते हैं। विभिन्न बंदरगाहों पर दो उदाहरण चलाने का प्रयास करें।

वैसे, यह तैनात होने के बाद एक समस्या नहीं होनी चाहिए, क्योंकि वास्तविक ऐपइंजिन सर्वर निश्चित रूप से एकाधिक एक साथ अनुरोधों को संभालने में सक्षम है।

+0

आह यह जांच की एक बहुत ही आशाजनक रेखा की तरह लगता है। मैं इसे आज़माउंगा और आपसे वापस आऊंगा। धन्यवाद! – nafe

+2

यह _really_ shoudl दस्तावेज़ों में होना चाहिए। – bobobobo

+0

यह वास्तव में मुद्दा था। यूआरएलफ़ेच के प्रेषक और रिसीवर को अलग-अलग सर्वरों में विभाजित करने से मेरा मुद्दा हल हो गया। – nafe

संबंधित मुद्दे