python 中的简单 post 请求线程中的 SSL 错误
SSL Error in thread with simple post request in python
我正在尝试做一个简单的 post 请求,我正在使用一个列表,因为我想使用线程同时发送我所有的 post 请求。这是 url 的示例:
s = "https://emoncms.org/input/post.json?node="+str(test)+"&json={test_stack_overflow:0}&apikey="+str(apikey)
list.append(threading.Thread(target=requests.post, args=([s, ])))
我大约 3 个月前使用过这段代码,它运行良好。
这周我想重新开始这个项目,但我意识到我遇到了一些错误,尤其是这个错误:
Exception in thread Thread-14:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 94, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 420, in send
raise SSLError(e, request=request)
SSLError: <unprintable SSLError object>
我遇到了另一个错误,ConnectionError,但我认为这是由于网络或因为网站无法跟踪它 activity 或已关闭。如果你愿意,我给你留下回溯:
ConnectionError: ('Connection aborted.', error(101, 'Network is unreachable'))
这段代码只是我项目的一部分,代码每分钟 运行 我不知道为什么,但这个问题 (SSLError) 一天可能只出现 10 次。我在不同的 Raspberry Pi 上得到了这个脚本 运行,有些有同样的问题但频率不同,有些则根本没有。
有什么想法吗?
提前致谢 !
像这样在请求方法中使用verify=False
import requests
url="https://emoncms.org/input/post.json?node="+str(test)+"&json={test_stack_overflow:0}&apikey="+str(apikey)
requests.post(url,verify=False)
如果你使用线程,那么它会像
list.append(threading.Thread(target=requests.post, args=(url,),kwargs={"verify":False})) #**kwargs should be passed seperately.
您收到此错误是因为 python 请求尝试验证 https 连接的证书,因此您必须通过传递 verify=False
来覆盖它,或者您也可以像这样在验证中提供证书 requests.get(url,verify="/path/to/certificate.ext")
我也怀疑这应该是一个获取请求,因为据我所知,查询参数不会出现在 post 请求中。因此,如果您使用 GET
方法,同样 verify
也适用。
我正在尝试做一个简单的 post 请求,我正在使用一个列表,因为我想使用线程同时发送我所有的 post 请求。这是 url 的示例:
s = "https://emoncms.org/input/post.json?node="+str(test)+"&json={test_stack_overflow:0}&apikey="+str(apikey)
list.append(threading.Thread(target=requests.post, args=([s, ])))
我大约 3 个月前使用过这段代码,它运行良好。 这周我想重新开始这个项目,但我意识到我遇到了一些错误,尤其是这个错误:
Exception in thread Thread-14:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 94, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/api.py", line 49, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 420, in send
raise SSLError(e, request=request)
SSLError: <unprintable SSLError object>
我遇到了另一个错误,ConnectionError,但我认为这是由于网络或因为网站无法跟踪它 activity 或已关闭。如果你愿意,我给你留下回溯:
ConnectionError: ('Connection aborted.', error(101, 'Network is unreachable'))
这段代码只是我项目的一部分,代码每分钟 运行 我不知道为什么,但这个问题 (SSLError) 一天可能只出现 10 次。我在不同的 Raspberry Pi 上得到了这个脚本 运行,有些有同样的问题但频率不同,有些则根本没有。
有什么想法吗?
提前致谢 !
像这样在请求方法中使用verify=False
import requests
url="https://emoncms.org/input/post.json?node="+str(test)+"&json={test_stack_overflow:0}&apikey="+str(apikey)
requests.post(url,verify=False)
如果你使用线程,那么它会像
list.append(threading.Thread(target=requests.post, args=(url,),kwargs={"verify":False})) #**kwargs should be passed seperately.
您收到此错误是因为 python 请求尝试验证 https 连接的证书,因此您必须通过传递 verify=False
来覆盖它,或者您也可以像这样在验证中提供证书 requests.get(url,verify="/path/to/certificate.ext")
我也怀疑这应该是一个获取请求,因为据我所知,查询参数不会出现在 post 请求中。因此,如果您使用 GET
方法,同样 verify
也适用。