【发布时间】:2017-02-27 17:14:17
【问题描述】:
我有一个 Web 服务 (REST),其中一个请求可能需要 30 秒才能返回答案(大量计算)。存在风险,即在计算过程中,客户端 Web 浏览器会中止(?)现有连接并重试。这是服务器端的控制台输出:
Exception happened during processing of request from ('127.0.0.1', 53209)
Traceback (most recent call last):
File "C:\Users\tmx\Anaconda2\lib\SocketServer.py", line 290, in _handle_request_noblock
self.process_request(request, client_address)
File "C:\Users\tmx\Anaconda2\lib\SocketServer.py", line 318, in process_request
self.finish_request(request, client_address)
File "C:\Users\tmx\Anaconda2\lib\SocketServer.py", line 331, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\tmx\Anaconda2\lib\SocketServer.py", line 654, in __init__
self.finish()
File "C:\Users\tmx\Anaconda2\lib\SocketServer.py", line 713, in finish
self.wfile.close()
File "C:\Users\tmx\Anaconda2\lib\socket.py", line 283, in close
self.flush()
File "C:\Users\tmx\Anaconda2\lib\socket.py", line 307, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053] An established connection was aborted by the software in your host machine
我想到的一个选项是以某种方式通知客户端“我还活着,但请求仍需要更多时间”,或者以某种方式在服务器端设置超时。有哪些可能性?
【问题讨论】: