2016-11-01 37 views
1

TeamCityでカスタムPythonスクリプトを使用するビルドステップがあります。私は次のエラーを取得するビルドを実行しようとすると:Pythonリクエストで最大再試行回数がurlを超えました

[20:57:12][Step 1/3] Traceback (most recent call last): 
[20:57:12][Step 1/3] File "/amirsys/teamcity-agent/lastBuildStatus.py", line 24, in <module> 
[20:57:12][Step 1/3]  main() 
[20:57:12][Step 1/3] File "/amirsys/teamcity-agent/lastBuildStatus.py", line 13, in main 
[20:57:12][Step 1/3]  build = getLastBuild(buildId) 
[20:57:12][Step 1/3] File "/amirsys/teamcity-agent/teamcity.py", line 204, in getLastBuild 
[20:57:12][Step 1/3]  return requests.get(url, auth=auth) 
[20:57:12][Step 1/3] File "/usr/lib/python2.7/dist-packages/requests/api.py", line 55, in get 
[20:57:12][Step 1/3]  return request('get', url, **kwargs) 
[20:57:12][Step 1/3] File "/usr/lib/python2.7/dist-packages/requests/api.py", line 44, in request 
[20:57:12][Step 1/3]  return session.request(method=method, url=url, **kwargs) 
[20:57:12][Step 1/3] File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request 
[20:57:12][Step 1/3]  resp = self.send(prep, **send_kwargs) 
[20:57:12][Step 1/3] File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send 
[20:57:12][Step 1/3]  r = adapter.send(request, **kwargs) 
[20:57:12][Step 1/3] File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send 
[20:57:12][Step 1/3]  raise ConnectionError(e) 
[20:57:12][Step 1/3] requests.exceptions.ConnectionError: HTTPSConnectionPool(host='teamcity.amirsys-int.com', port=443): Max retries exceeded with url: /httpAuth/app/rest/builds/buildType:bt262,count:1 (Caused by <class 'socket.error'>: [Errno 110] Connection timed out) 

私が研究し、私はそれがここにできると思います答えを発見した:Max retries exceeded with URLを。彼らは使用することを提案します:

from time import sleep 

要求間隔を広げる?これは私がする必要がありますか?

def getLastBuild(buildConfigId): 
    url = path + 'builds/buildType:' + buildConfigId + ',count:1' 
    return requests.get(url, auth=auth) 

def main(): 

    buildId = sys.argv[1] 

    build = getLastBuild(buildId) 

    if build.status_code == 200: 
     result = "SUCCESS" 
     print result 
    else: 
     result = "FAILURE" 
     print result 

if __name__ == "__main__": 
    main() 

はなぜ、この要求が拒否されています。私は私のスクリプトとしてあまりにも多くのリクエストを送信することができますか

は、私はこれだけの単純な要求を行う理解していませんか?

+0

どのように 'getLastBuild()'を呼び出しますか? – roganjosh

+0

@roganjosh私はフルスクリプト –

+0

Hmmで質問を更新しました。あなたの提案された回答へのリンクに続いて、この[issue](https://github.com/kennethreitz/requests/issues/1198)へリンクしています。コードで再試行を指定していないため、エラーメッセージは意味をなさないと思われます。あなたはあなたの '要求'と 'urllib3'を更新しましたか?(それを固定するのを助けるために"最大再試行を超えました "ではなく"正確な "接続が拒否されることを示唆しています)? – roganjosh

答えて

0

私はついにこの問題が何かを知りました。要求はローカルホストを離れてURLにアクセスしていたため、接続がタイムアウトするように「戻ってきませんでした」。これは、正しいIPアドレスを指定することで修正されました。

関連する問題