2017-09-28 3 views
0

Puisqu'une de mes tâches dans views.py prend du temps, je pense que je ferais mieux de le mettre en arrière-plan. Mais aussi, je veux m'assurer que lorsque cette tâche sera terminée, je recevrai quelque chose à l'avant. Comment puis-je atteindre cet objectif? J'ai cherché et trouvé des django-channels, mais je n'arrive toujours pas à combiner les deux objectifs. J'espère que quelqu'un m'aidera.Comment puis-je exécuter une tâche en arrière-plan dans django et quand c'est fait, je peux pousser l'information vers le début.

+0

Montrez-nous votre avis.py – Suncatcher

Répondre

1

Vous avez essentiellement 2 options:

Soit vous avez votre demande client l'état de votre tâche de longue haleine régulièrement et réagira en conséquence quand il est fait.

Ou vous utilisez des sockets entre votre client et votre serveur et informez votre client via le socket, lorsque la tâche est terminée. L'une des options recommandées pour les sockets est django-channels. Y a-t-il quelque chose qui ne va pas?

0

tâches de fond Toujours exécuter en utilisant le traitement des tâches asynchrones comme

  1. CELERI
  2. DJANGO TÂCHES CONTEXTE (https://github.com/arteria/django-background-tasks)

Pour pousser l'utilisation de la notification

  1. Django-canaux (websockets
  2. Django-webpush https://github.com/safwanrahman/django-webpush
  3. Polling
  4. Tornado (connexion longue ouverture) ou StreamingHttpResponse dans Django peut aussi résoudre

si vous pensez websockets sont difficiles pour vous de maintenir aller pour le scrutin.