2016-12-29 1 views
2

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

+0

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

+0

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. –

Répondre

0

ce fut un problème avec le calendrier des travailleurs gunicorn dehors. Lorsque vous lancez gunicorn vous pouvez spécifier le timeout comme un argument pour le rendre plus long et donner assez de temps pour que le fichier finisse de télécharger