2012-07-11 37 views
2

我想实现某种Django的后台任务队列,因为芹菜过于庞大&复杂,那么它发生,我认为,已经有一个名为request_finished为什么Django中没有response_finished信号?

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

但为什么Django的信号没有信号叫response_finished

Django可能是同步的,但我可以做一些事后响应数据处理和保存任务,它只能采取更多的步骤。

在Django中是否有一种方法可以做一些后处理工作?

TIA

+1

数据处理是否依赖于响应的内容?这似乎不太可能。为什么不从视图内部启动线程?该任务仍然是异步的,并且不会阻止响应。这个答案可能更有帮助 - http://stackoverflow.com/a/11904222/420386 – 2012-09-18 10:54:02

回答

2

可以write your own middleware(特别是使用process_response)如果您需要的响应已经组装之后执行的任务。在响应“完成”之后有一个信号处理程序就没有意义,因为该阶段,您已经执行了您的视图并呈现了您的模板。

+0

重点是我可以使用在执行视图的上下文中的响应后做一些数据处理。例如。一些远程数据库可能会很慢,执行期间会花费额外的时间来响应响应。 – est 2012-07-11 04:21:35