में समय लेने वाली आरईएसटी सेवा के साथ त्रुटि मैं सेवा में भाग लेने के लिए कोड लिख रहा हूं। मुझे किसी विशेष सेवा के लिए POST अनुरोध प्राप्त होते हैं और प्रसंस्करण शुरू करते हैं। पूरी प्रक्रिया अपेक्षाकृत सरल है; मैं अनुरोध में लूप आइटम को लूप करता हूं और प्रत्येक आइटम को डेटाबेस में जोड़ता हूं। समस्या पैदा होती है जब मैं बहुत से आइटम पर कार्रवाई करने के लिए है और तीन मिनट के खत्म करने के लिए की तरह पाश जब मैं प्रतिक्रिया करने के लिए कोशिश लेता है, तो:पायथन
Exception happened during processing of request from ('XXX.XXX.XXX.XXX', 49172)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/local/lib/python2.7/SocketServer.py", line 310, in process_request
self.finish_request(request, client_address)
File "/usr/local/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/local/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/local/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
मैं डॉन:
status = '200 OK'
headers = [('Content-type', 'application/json'),('Access-Control-Allow-Origin','*')]
start_response(status, headers)
return json.dumps(response)
मैं इस त्रुटि मिलती है यह नहीं पता कि यह मदद करता है, लेकिन POST अनुरोध ब्राउज़र से एक अलग डोमेन पर एक अग्रेषित पोस्ट है (यही कारण है कि एक एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनिन) और डेटाबेस में सभी एक्सेस एक ऑब्जेक्ट का उपयोग करके बनाई जाती हैं SQLAlchemy का उपयोग कर डेटाबेस के साथ इंटरैक्ट करता है (Java EEDAO पैटर्न के समान देखा जा सकता है)।
मैं इस त्रुटि से कैसे बचूं?
संभव डुप्लिकेट http://stackoverflow.com/questions/10253288/django-development-server-broken: http प्रतिक्रिया कोड की एक पूरी अवलोकन के लिए इस लिंक का अनुसरण -पाइप-त्रुटि) – miku
आप इसे असीमित बना सकते हैं। जैसे ही सभी डेटा यहां है, आप एक टोकन वापस भेजते हैं कि डेटा प्राप्त होता है और क्लाइंट साइड पर आप "लोड हो रहा है ..." संदेश प्रदर्शित कर सकते हैं। यदि डेटा अपलोड करना समाप्त हो गया है, तो क्लाइंट समय-समय पर अद्यतनों की जांच करें, और फिर एक बार समाप्त हो जाने पर, आप पूर्ण एक प्रदर्शित करते हैं। –
आमतौर पर जब मुझे टूटा हुआ पाइप त्रुटि मिलती है, तो यह कुछ बेवकूफ है, क्लाइंट की तरह समय समाप्त हो गया था जब मैं सर्वर कोड डीबग कर रहा था। यदि प्रक्रिया को तीन मिनट से अधिक समय लगता है, तो प्रक्रिया को असंकालिक रूप से किया जाना चाहिए और आपको यह पुष्टि करने का जवाब देना चाहिए कि प्रक्रिया को तब तक प्रतीक्षा करने के बजाय सफलतापूर्वक शुरू किया गया है जब तक कि प्रतिक्रिया करने के लिए प्रक्रिया पूरी नहीं हो जाती। –