Bonjour,

Je suis entrain de développer un script python 3 envoyant un fichier zip de 100 Mo par HTTP à l'aide du paquetage requests.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/local/bin/python3 -u
 
import requests
 
email="user@srv.fr"
 
try:
    res = requests.post('http://server/Upload/upload.php',
                        files={'aFile': open('/tmp/test.zip','rb')},
                        data={'email': email, 'submitFile': 'Envoyer le fichier'})
 
except requests.exceptions.Timeout:
    print('timeout')
 
print(res.content)
A l’exécution mon script me retourne l'erreur suivante : ConnectionResetError: [Errno 104] Connection reset by peer

Voici la trace compléte de l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 594, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 391, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 387, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/local/lib/python3.5/http/client.py", line 1197, in getresponse
    response.begin()
  File "/usr/local/lib/python3.5/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/usr/local/lib/python3.5/http/client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/local/lib/python3.5/socket.py", line 575, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 643, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/util/retry.py", line
334, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/packages/six.py", lin
e 685, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 594, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 391, in _make_request
    six.raise_from(e, None)
  File "<string>", line 2, in raise_from
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/packages/urllib3/connectionpool.py", l
ine 387, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/local/lib/python3.5/http/client.py", line 1197, in getresponse
    response.begin()
  File "/usr/local/lib/python3.5/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/usr/local/lib/python3.5/http/client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/local/lib/python3.5/socket.py", line 575, in readinto
    return self._sock.recv_into(b)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset
by peer'))
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "post.py", line 10, in <module>
    data={'email': email, 'submitFile': 'Envoyer le fichier'})
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/api.py", line 110, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/requests-2.12.1-py3.5.egg/requests/adapters.py", line 473, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

L'envoi du même fichier vers le même serveur à l'aide l’outil curl exécuté grâce a cette commande depuis un terminal fonctionne correctement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
curl --form aFile=@"/tmp/test.zip" --form email="user@srv.fr" --form submitFile="Envoyer le fichier" http://server/Upload/upload.php
Mon utilisation du paquetage requests me semble bonne.

Quelqu'un aurait-il une idée de l'origine de ce problème ?

Cordialement,

flo84316