Lorsque vous téléchargez le fichier avec Django, la réponse ne sera pas renvoyée tant que le téléchargement de fichier n'est pas terminé. Si le fichier téléchargé est grand, il faudra une longue période au cours de laquelle l'utilisateur ne peut rien faire d'autre que d'attendre. Y a-t-il un moyen de mettre en œuvre un traitement asynchrone du téléchargement de fichier? Ainsi, lorsqu'un fichier téléchargeez le backend, l'utilisateur peut effectuer une autre opération sur la page en cours sans interrompre le téléchargement? P>
3 Réponses :
Vous avez besoin de gestion de la tâche. Le céleri est ce que vous après. P>
Techniquement, je ne pense pas que le céleri est spécifiquement nécessaire si l'OP est juste un poste Ajax. Bien que s'ils le souhaitent plus interactifs, ils devraient utiliser un uploader flash ou une tâche de célery async et continuer à interroger le statut pour qu'il s'inscrire complète
Merci. J'ai essayé de traiter le téléchargement du fichier avec multithread, mais le thread de lecture de flux est toujours en train de sortir avec la défaillance de la dépose. Je vais essayer d'utiliser la tâche de céleri Asyc.
C'est assez loin d'une réponse précieuse. La tâche de céleri ne peut pas accepter un objet ressemblant à un fichier comme argument, car il a besoin de ses arguments pour être JSON-Serializable. En outre, il y a la taille maximale des arguments pour les courtiers (au moins pour rabbbitmq).
Je suis conscient que cela a été plus que 5 ans que cette question a été posée, mais j'ai un problème similaire et il n'y a pas de "réponses simples" à ce sujet. P>
Pour votre problème, je peux suggérer d'utiliser un Barre de progression (si vous utilisez des formulaires Django). Téléchargement d'un fichier asynchrone pourrait ne pas être possible à Django. P>
Dans mon cas, l'élément de navigateur n'est pas crucial et je envisage de déplacer le téléchargement de fichier depuis le téléchargement de navigateur sur une sorte de stockage de fichiers FTP / AWS S3 et de votre travail. P>
semble être comme https://github.com/jeanphix/django-resumable est conçu Pour cela (jamais essayé cependant). Il y a aussi une version pour le site d'administration - https://github.com/jonatron/django -Admin-Reprenable-JS P>
UPD UPD: Django-Reprenable est maintenant abandonné, donc j'ai fini par créer ma propre fourche avec support pour les vues d'administration S3 et inline. Vous pouvez l'essayer ici, les commentaires très bien sont les bienvenus - https://github.com/ Datageed / django-admin-async-upload p>