0
votes

La tâche de fond Django est verrouillée lorsqu'il y a trop de tâche en même temps

sur mon serveur lorsque l'utilisateur télécharge plusieurs fichiers, le code Python sera exécuté pour le traiter.

Je peux télécharger 100 fichiers avec succès, mais si les fichiers sont terminés que la tâche sera verrouillée (je regarde Django Admin Page Page, il a déclaré "verrouillé par PID en marche") et plus aucun fichier ne peut être traité.

voici le code xxx

mais si je commentaire le @background Line Out, Le problème ne se produira pas.

Comment puis-je faire fonctionner la tâche de fond de Django dans cette situation?

@background est un décorateur qui tourne toute fonction python dans la tâche. C'était l'un des colis de Django (Django -background-tasks.readthedocs.io/en/Latest)


5 commentaires

Veuillez ajouter suffisamment de code afin que nous puissions reproduire le problème.


Cela ressemble à un problème avec cet emballage particulier. Vous devriez essayer céleri à la place.


Il y a trop de raisons pour lesquelles vous pouvez obtenir ce comportement permettant de répondre à votre question sans beaucoup d'informations plus. Cela pourrait être un problème dans votre propre code, cela pourrait être un problème avec votre configuration, cela pourrait être un problème avec les limites du système sur des fichiers ouverts ou d'autres ressources, etc., etc., vous suggérez vivement que vous vérifiez le suivi du problème du projet et éventuellement Soumettez votre problème là-bas - mais les mainteneurs demanderont certainement un exemple de reproductible minimal .


@Calebgoodman céleri a des problèmes aussi et n'est pas la file d'attente des tâches ASYNC la plus légère en ce qui concerne la configuration et l'administration de Bot, et ne parlons pas de débogage. Je ne le recommanderais que pour des projets qui ont vraiment besoin de toute la puissance et des caractéristiques d'une pile d'AMQP complète.


Merci pour toute la suggestion et la réponse. J'ai conclu que la tâche de fond Django ne fonctionne pas bien avec beaucoup de tâches. Je vais donc devoir mettre la limite sur la partie utilisateur à la place. Également désolé du code, je ne pouvais pas fournir plus de détails.


3 Réponses :


-1
votes

Votre question est vague, quel est le code du décorateur @background


3 commentaires

@Background est un décorateur qui tournait toute fonction Python dans la tâche. C'était l'un des colis de Django ( Django-background-tasks.readthedocs.io/en/ Dernier )


Quelle base de données utilisez-vous?


Les réponses @eswarkumaShu sont pour Répondre à une question. Si vous avez des questions, c'est ce que font les commentaires.



-1
votes

Django ne prend pas en charge la parallélisation et il est synchrone de sorte que la tâche ne soit pas terminée, il ne commencera pas le second. S'il vous plaît donner un peu plus de code.


1 commentaires

@brunodesthuilliers Je connais toutes ces choses mais je ne dis que ce qui pourrait arriver dans ce cas.



0
votes

Voici un code de triche Par exemple, vous savez que votre fichier ne dépassera jamais 300, vous pouvez dire dans vos paramètres xxx

ou n'importe quel nombre que vous aimez, assurez-vous que c'est votre limite supérieure < / p>


0 commentaires