python

时间:2017-04-11 13:30:59

标签: python multithreading ssl ssl-certificate

我正在尝试做一个简单的帖子请求,我正在使用列表,因为我想使用线程同时发送所有帖子请求。以下是网址示例:

            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,但我认为这是由于网络或因为网站无法跟踪它的活动或者是因为网络故障。如果你愿意,我会给你留下追溯:

ConnectionError: ('Connection aborted.', error(101, 'Network is unreachable'))

这段代码只是我项目的一部分,代码每分钟运行一次,我不知道为什么,但这个问题(SSLError)每天只有10次。我让这个脚本在不同的Raspberry Pi上运行,有些问题有相同的问题,但频率不一样,有些根本没有。

关于将要发生什么的任何想法? 提前致谢 !

1 个答案:

答案 0 :(得分:0)

在请求方法中使用@Component( selector = 'card-flip', template = ` <card-flip-content #theOne> <ng-content /> </card-flip-content> <card-flip-content #theClone> <ng-content /> </card-flip-content> `) ,如下所示

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)

您收到此错误是因为python请求尝试验证https连接的证书,因此您必须通过传递list.append(threading.Thread(target=requests.post, args=(url,),kwargs={"verify":False})) #**kwargs should be passed seperately. 来覆盖它,或者您也可以像verify=False那样提供验证证书

此外,我怀疑这应该是一个获取请求,因为据我所知,查询参数不会在post请求中出现。因此,如果您使用requests.get(url,verify="/path/to/certificate.ext")方法同样适用GET