Parfois, il cesse soudainement de fonctionner après avoir travaillé normalement pendant plus d'une heure sans aucune erreur, ou l'erreur request.packages.urllib3.exceptions.ProtocolError: ("Connection aborted.', BadStatusLine("''",)) est signalée ailleurs. sur Internet. Certains disent que le délai est expiré, certains disent qu'il est connecté à https, certains disent qu'il doit être modifié en python3.5 ou supérieur (j'utilise python3.4)
Le programme est le programme original des questions précédentes plus une boucle de while True :, merci
Programme :
import requests
import json
url = "https://api-fxpractice.oanda.com/v1/prices"
instruments = 'EUR_USD,USD_CAD'
account_id = 'cawa11'
params = {'instruments':instruments,'accountId':account_id}
access_token = 'a554db3a48ac8180a6996a5547ba1663-ac5947e64456cc5842a34f4ce05e4380'
headers = {'Connection': 'Keep-Alive',
'Accept-Encoding': 'gzip,deflate',
'Authorization':'Bearer '+access_token} #Bearer后有空格
while True :
r = requests.get(url,headers = headers, params=params)
price = r.json()
print(r.json())
print(price['prices'][0]['instrument'].replace('_','/'),':',round((price['prices'][0]['ask']+price['prices'][0]['bid'])/2,4),' ',price['prices'][0]['time'])
print(price['prices'][1]['instrument'].replace('_','/'),':',round((price['prices'][1]['ask']+price['prices'][1]['bid'])/2,4),' ',price['prices'][1]['time'])
Message d'erreur :
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connectionpool.py", line 554, in urlopen
self._prepare_proxy(conn)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connectionpool.py", line 750, in _prepare_proxy
conn.connect()
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connection.py", line 230, in connect
self._tunnel()
File "C:\Python34\lib\http\client.py", line 815, in _tunnel
(version, code, message) = response._read_status()
File "C:\Python34\lib\http\client.py", line 321, in _read_status
raise BadStatusLine(line)
http.client.BadStatusLine: ''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\adapters.py", line 376, in send
timeout=timeout
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connectionpool.py", line 609, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\util\retry.py", line 247, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\packages\six.py", line 309, in reraise
raise value.with_traceback(tb)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connectionpool.py", line 554, in urlopen
self._prepare_proxy(conn)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connectionpool.py", line 750, in _prepare_proxy
conn.connect()
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\packages\urllib3\connection.py", line 230, in connect
self._tunnel()
File "C:\Python34\lib\http\client.py", line 815, in _tunnel
(version, code, message) = response._read_status()
File "C:\Python34\lib\http\client.py", line 321, in _read_status
raise BadStatusLine(line)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', BadStatusLine("''",))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lenovo\Desktop\hh.py", line 27, in <module>
r = requests.get(url,headers = headers, params=params)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\sessions.py", line 576, in send
r = adapter.send(request, **kwargs)
File "C:\Python34\lib\site-packages\requests-2.9.1-py3.4.egg\requests\adapters.py", line 426, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",))
Nouveau message d'erreur après avoir effectué la modification comme @prolifes l'a dit :
Traceback (dernier appel le plus récent) :
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagesurllib3connectionpool.py", ligne 559, dans urlopen
body=body, headers=headers)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 345, dans _make_request
self._validate_conn(conn)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 784, dans _validate_conn
conn.connect()
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connection.py", ligne 252, dans connect
ssl_version=resolved_ssl_version)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3utilssl_.py", ligne 305, dans ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
Fichier "C:Python34libssl.py", ligne 365, dans wrap_socket
_context=self)
Fichier "C:Python34libssl.py", ligne 583, dans init
self.do_handshake()
Fichier "C:Python34libssl.py", ligne 810, dans do_handshake
self._sslobj.do_handshake()
TimeoutError : [WinError 10060] La tentative de connexion a échoué car la partie qui se connecte n'a pas répondu correctement après un certain temps ou l'hôte connecté ne répondait pas.
Lors du traitement de l'exception ci-dessus, une autre exception s'est produite :
Traceback (dernier appel le plus récent) :
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestsadapters.py", ligne 376, dans send
timeout=timeout
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 609, dans urlopen
_stacktrace=sys.exc_info()[2])
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3utilretry.py", ligne 247, par incrément
raise six.reraise(type(error), error, _stacktrace)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagesurllib3packagessix.py", ligne 309, en reraise
raise value.with_traceback(tb)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 559, dans urlopen
body=body, headers=headers)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 345, dans _make_request
self._validate_conn(conn)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3connectionpool.py", ligne 784, dans _validate_conn
conn.connect()
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagesurllib3connection.py", ligne 252, dans connect
ssl_version=resolved_ssl_version)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestspackagessurllib3utilssl_.py", ligne 305, dans ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
Fichier "C:Python34libssl.py", ligne 365, dans wrap_socket
_context=self)
Fichier "C:Python34libssl.py", ligne 583, dans init
self.do_handshake()
Fichier "C:Python34libssl.py", ligne 810, dans do_handshake
self._sslobj.do_handshake()
requests.packages.urllib3.exceptions.ProtocolError : ("Connexion interrompue.", TimeoutError(10060, "La tentative de connexion a échoué car la partie qui se connecte n'a pas répondu correctement après un certain temps ou l'hôte connecté n'a pas répondu.', Aucun, 10060, Aucun))
Lors du traitement de l'exception ci-dessus, une autre exception s'est produite :
Traceback (dernier appel le plus récent) :
Fichier "C:UserslenovoDesktopii.py", ligne 30, en cours d'exécution
r = requests.get(url,headers = headers, params=params)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestsapi.py", ligne 67, dans get
return request('get', url, params=params, **kwargs)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestsapi.py", ligne 53, dans requête
return session.request(method=method, url=url, **kwargs)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestssessions.py", ligne 468, dans requête
resp = self.send(prep, **send_kwargs)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestssessions.py", ligne 576, dans send
r = adapter.send(request, **kwargs)
Fichier "C:Python34libsite-packagesrequests-2.9.1-py3.4.eggrequestsadapters.py", ligne 426, dans send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError : ('Connexion interrompue.', TimeoutError(10060, 'La tentative de connexion a échoué car la partie qui se connecte n'a pas répondu correctement après un certain temps ou l'hôte connecté n'a pas répondu.', Aucun, 10060, Aucun))
Lors du traitement de l'exception ci-dessus, une autre exception s'est produite :
Traceback (dernier appel le plus récent) :
Fichier "C:UserslenovoDesktopii.py", ligne 133, dans <module>
run()
Fichier "C:UserslenovoDesktopii.py", ligne 128, en cours d'exécution
print(traceback.format_exc())
NameError : le nom « traceback » n'est pas défini
Encapsulez les codes clés dans les fonctions et ajoutez une gestion des erreurs pour garantir que même si vrai n'est pas interrompu et imprimez les informations pour le dépannage
Le problème a été résolu avec l'aide de @prolifes, la procédure est la suivante :
codage : utf-8
demandes d'importation
importation json
importation traceback
def run() :
si nom == '__main__':