2017-05-10 5 views
0

質問を投稿する前に多くの記事を読んだことがあります。回答が得られなかったり、Pythonの知識があまりにも複雑すぎたためです。 私はマルチプロセッシングを持ついくつかのPOSTリクエストを送信しようとしていると私は私のラズベリーパイをネットワークに接続するには成功しなかったとき、私はいくつかの ConnectionError: ('Connection Aborted.', gaierror(-2, 'Name or service not known')マルチプロセッシングのpythonでrequests.exception.ConnectionErrorを処理する方法

は、だから私は私のコードでこれをやっていたことに気づく:

私は from requests.exceptions import ConnectionErrorをしなければならないことを知っている
url = "https://some_url.org}" 
list.append(multiprocessing.Process(target=requests.post, args=(url,))) 

#doing this several times with several urls, then 

for element in list: 
    element.start() 
for element in list: 
    element.join() 

は、私がforループ内での簡単なtry:except:を試してみたが、例外は子プロセスに位置しているので、それが働いていません。 トレースバックは次のとおりです。

Process Process-6: 
    self.run() 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap 
    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) 
    self.run() 
    File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 114, 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 407, in send 

ありがとうございました!

答えて

0

質問

import multiprocessing as mp 
import requests 

def req_wrapper(url): 
    try: 
     requests.post(url) 
    except Exception as e: 
     print('Exception catched in req_wrapper:{}'.format(e)) 

if __name__ == '__main__': 
    url = "https://some_url.org" 
    p = mp.Process(target=req_wrapper, args=(url,)) 
    p.start() 
    p.join() 

出力:例えば、requests.post(url)コールのためwrapperを使用

をマルチプロセッシングにrequests.exception.ConnectionErrorを処理する方法:
req_wrapperにcatched例外:('接続中止'、gaierror(-2、 '名前またはサービス知られていない'))はPythonでテスト

:3.4.2および2.7.9

+0

はい、私はすでにこれを試して、それは動作しません、それは私がマルチプロセスメソッドによって作成された子プロセスと私の親プロセスを通信するように思われる – GarennePb

+0

@ GarennePb: – stovfl

関連する問題