Python 3.7.0
pyOpenSSL 18.0.0
requests 2.19.1
requests-futures 0.9.7
urllib3 1.23
https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/identify
在使用Python时,我无法从ArcGIS restapi收到完整的响应。我可以通过Chrome导航到URL,也可以在Postman中发出GET请求。上面的链接是一个成功的GET请求的示例,其中包含我期望的JSON响应。我尝试过使用requests、urllib和socket编写请求。显然,这两个请求和套接字都在recv\u into时失败。当运行下面的代码时,在我得到WSAECONNRESET错误之前,我只收到两个块。如果我在geometry设置为false的情况下发出请求,响应会小得多,并且返回时不会出现问题。我不知道为什么连接只在Python中关闭,需要一些帮助来修复它,或者使用其他方法来进行查询。在
谢谢!在
Traceback (most recent call last):
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\contrib\pyopenssl.py", line 285, in recv_into
return self.connection.recv_into(*args, **kwargs)
File "C:\VirtualEnvs\tfia\lib\site-packages\OpenSSL\SSL.py", line 1814, in recv_into
self._raise_ssl_error(self._ssl, result)
File "C:\VirtualEnvs\tfia\lib\site-packages\OpenSSL\SSL.py", line 1631, in _raise_ssl_error
raise SysCallError(errno, errorcode.get(errno))
OpenSSL.SSL.SysCallError: (10054, 'WSAECONNRESET')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\response.py", line 331, in _error_catcher
yield
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\response.py", line 413, in read
data = self._fp.read(amt)
File "C:\Program Files\Python37\Lib\http\client.py", line 447, in read
n = self.readinto(b)
File "C:\Program Files\Python37\Lib\http\client.py", line 491, in readinto
n = self.fp.readinto(b)
File "C:\Program Files\Python37\Lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\contrib\pyopenssl.py", line 290, in recv_into
raise SocketError(str(e))
OSError: (10054, 'WSAECONNRESET')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\models.py", line 749, in generate
for chunk in self.raw.stream(chunk_size, decode_content=True):
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\response.py", line 465, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\response.py", line 430, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
File "C:\Program Files\Python37\Lib\contextlib.py", line 130, in __exit__
self.gen.throw(type, value, traceback)
File "C:\VirtualEnvs\tfia\lib\site-packages\urllib3\response.py", line 349, in _error_catcher
raise ProtocolError('Connection broken: %r' % e, e)
urllib3.exceptions.ProtocolError: ('Connection broken: OSError("(10054, \'WSAECONNRESET\')")', OSError("(10054, 'WSAECONNRESET')"))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\VirtualEnvs\tfia\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\rallison\Documents\GitHub\PROCESSING-AUTO-UNDERWRITING-LOGIC\auto_underwriting\receiving.py", line 19, in applications
processApplication(payload)
File "C:\VirtualEnvs\tfia\lib\site-packages\celery\local.py", line 191, in __call__
return self._get_current_object()(*a, **kw)
File "C:\VirtualEnvs\tfia\lib\site-packages\celery\app\task.py", line 375, in __call__
return self.run(*args, **kwargs)
File "C:\Users\rallison\Documents\GitHub\PROCESSING-AUTO-UNDERWRITING-LOGIC\auto_underwriting\processing.py", line 13, in processApplication
processed = Underwriter(coordinates["lat"], coordinates["lng"])
File "C:\Users\rallison\Documents\GitHub\PROCESSING-AUTO-UNDERWRITING-LOGIC\auto_underwriting\underwriting.py", line 33, in __init__
self.underwrite(latitude, longitude)
File "C:\Users\rallison\Documents\GitHub\PROCESSING-AUTO-UNDERWRITING-LOGIC\auto_underwriting\underwriting.py", line 111, in underwrite
self.search_range, True)["results"]
File "C:\Users\rallison\Documents\GitHub\PROCESSING-AUTO-UNDERWRITING-LOGIC\auto_underwriting\underwriting.py", line 96, in FEMA_identify
r = s.get(url, params=payload, stream=False, timeout=30)
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\sessions.py", line 525, in get
return self.request('GET', url, **kwargs)
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\sessions.py", line 512, in request
resp = self.send(prep, **send_kwargs)
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\sessions.py", line 662, in send
r.content
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\models.py", line 827, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
File "C:\VirtualEnvs\tfia\lib\site-packages\requests\models.py", line 752, in generate
raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: ('Connection broken: OSError("(10054, \'WSAECONNRESET\')")', OSError("(10054, 'WSAECONNRESET')"))
我在使用内部服务器时遇到了类似的问题。从ssl.1.1降到了openi.1.1。在
或者,一个更简单的解决方案是不使用OpenSSL。在导入请求之后,将立即使用call
requests.packages.urllib3.contrib.pyopenssl.extract_from_urllib3()
和python的stdlib SSL实现来代替OpenSSL。在这肯定是个bug,但我不确定是openssl、pyopenssl还是糟糕的服务器配置。在
相关问题 更多 >
编程相关推荐