2012-07-11 1 views
2

Je suis en train de mettre en œuvre une sorte de file d'attente des tâches d'arrière-plan dans Django, parce que Céleri est trop énorme & complexe, il est produit pour moi que, il y a déjà un signal appelé request_finishedpourquoi il n'y a pas de signal response_finished dans Django?

https://docs.djangoproject.com/en/dev/ref/signals/#django.core.signals.request_finished

Mais pourquoi Django ne pas avoir un signal appelé response_finished? Django peut être synchrone, mais je peux faire quelques tâches de post-traitement de données et d'enregistrement, il ne fait que quelques pas de plus.

Est-ce que pirater un moyen de faire un travail de post-réponse possible dans Django?

TIA

+1

Le traitement des données dépend-il en quelque sorte du contenu de la réponse? Cela semble hautement improbable. Pourquoi ne pas lancer un thread depuis l'intérieur de la vue? La tâche sera toujours asynchrone et ne bloquera pas la réponse. Cette réponse peut être plus utile - http://stackoverflow.com/a/11904222/420386 –

Répondre

2

Vous pouvez write your own middleware (en particulier en utilisant process_response) si vous devez effectuer des tâches après la réponse a été assemblé. Il n'y aurait aucun intérêt à avoir un gestionnaire de signal après que la réponse soit 'terminée' car à ce stade, vous avez exécuté votre vue et rendu votre modèle.

+0

le point est que je peux utiliser un peu de traitement de données après réponse dans le contexte des vues exécutées. Par exemple. certains db distants peuvent être lents, exécuter que pendant la vue coûterait plus de temps que la réponse. – est