2016-06-11 44 views
3

是什麼意思時,它說:ConnectionError,最大重試次數超過了使用URL(由無引起)

requests.exceptions.ConnectionError: None: Max retries exceeded with url: /myurl (Caused by None) 

具體是什麼意思「由無造成了」?

我有一個python客戶端和一臺簡單的clojure服務器在同一臺機器上運行。服務器使用4個線程在compojure + http-kit上運行。客戶端通過使用3個工作進程的multiprocessing.Pool使用3到4個進程連續提交POST請求。

每隔一段時間,客戶端都會死於上述的ConnectionError。我在客戶端設置retries = 3,並將服務器上的隊列大小增加到1000000,不起作用。

任何幫助,將不勝感激。

編輯:一個更正,我實際上發送POST請求不GET。

實際的腳本太大而不能在這裏發佈,但基本上它是這樣工作的。我有一些數據後調用一個函數:

def post_func(my_data, config): 
    return requests.post(my_url, data=json.dumps({"data": my_data, "config": config})) 

一類包裝multiprocessing.Pool:

class Executor(object): 
    def __init__(self, nprocs): 
     self.pool = Pool(processes=nprocs) 

    def execute(self, func, list_of_data): 
     return self.pool.map(func, list_of_data) 

,不同的配置要求Executor.execute()另一項功能:

function eval(executor, list_of_data, config): 
    start = timer() 
    func = partial(post_func, config=config) 
    results = executor.execute(func, list_of_data) 
    taken = timer()-start 
    return results 

單個Executor被重用於所有eval()調用。 eval()函數,然後包裹在一個計分功能,給pyswarm優化:

pso(score_func, lbs, ubs, swarmsize=20, maxiter=20, debug=True) 

編輯:這是我大概應該早點做,但正常捕捉ConnectionError給了我這樣的:

ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=5000): Max retries exceeded with url: /my_url (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f0ccb4b5550>: Failed to establish a new connection: [Errno 99] Cannot assign requested address',)) 

我現在重寫了腳本以重用單個請求.Session,如果能夠解決這個問題,很快就會知道。

+0

添加導致錯誤的代碼 –

+0

選中此項:http://stackoverflow.com/questions/18478013/python-requests-exceptions-connectionerror-max-retries-exceeded-with-url –

+0

@joelgoldstick任何特定評論那個問題? 我沒有收到「BadStatusLine」錯誤,我收到一個無。 – TheTaintedOne

回答

0

重複使用單個請求會話解決了我的問題。

相關問題