J'ai implémenté une API en utilisant Falcon, il utilise multipart/form pour télécharger un fichier vers mon serveur. Lorsque le fichier est petit (~ 1 Mo), la demande POST fonctionne correctement. Mais quand le fichier est grand (~ 20MB), le POST échoue avec l'erreur ci-dessous.http: erreur: ConnectionError: ('Connection aborted.', Erreur (32, 'Broken pipe')) tout en faisant requête POST à URL:
Avez-vous des commentaires sur la façon de résoudre ce problème?
Erreur:
http: error: ConnectionError: ('Connection aborted.', error(32, 'Broken pipe')) while doing POST request to URL: http://...:49160/api/upload
Ceci est ma demande en ligne de commande: En utilisant httpie:
http -f POST http://111.111.111.111:49160/api/upload filename=video.mp4 [email protected]/home/chacon/video.mp4
Ceci est ma fonction on_post:
def on_post(self, req, resp):
in_file = req.get_param('file')
in_video_name = in_file.filename
source_video_path = os.path.join("/tmp", in_video_name)
#working, but fails for large files
with open(source_video_path, 'wb') as source_video_file:
source_video_file.write(in_file.file.read())
Merci,
Carlos
J'ai un problème similaire et je l'adorerais si quelqu'un a des conseils ici. Ma conjecture est que le serveur ferme la connexion (peut-être parce que le délai d'expiration de la demande a expiré) mais je ne suis pas trop sûr – jamesatha
hi @ jamesatha c'était un problème avec le travailleur gunicorn qui expire. Lorsque vous lancez gunicorn, vous pouvez spécifier le délai d'attente comme argument pour le rendre plus long et laisser le temps au téléchargement du fichier de se terminer. –