Django:实时记录到浏览器

Django: Real-time logging to browser

在PHP中,我曾经能够使用echo命令并实时查看脚本。

例如:

Applying settings to 001...
* a second later *
Applying settings to 002...

这将在浏览器中显示给用户。 反正我可以在 Django 中使用像 echo 这样的命令吗? 很高兴知道我的应用程序确实在做某事并看到了进展。

It's nice to know my application is actually doing something and seeing the progress.

我假设您想通知实际用户一些长 运行 任务的进度,而不仅仅是打印调试语句。至于调试或者代码追踪,用Django的logging subsystem in combination with django-debugtoolbar.

Is there anyways I can use a command like echo in Django?

从 Django 1.5 开始,有一个 StreamingHttpResponse 允许您在某些情况下模拟 php 的 echo 行为。

但是,请考虑文档中的内容:

Django is designed for short-lived requests. Streaming responses will tie a worker process for the entire duration of the response. This may result in poor performance.

也就是说,有一个example

真的吗?

请注意,在任何 HTTP request/response 驱动上下文(Django 专为之设计)中,推荐且稳定的方法 是使用异步任务像 Celery for any long-lived processes. Then use a polling client to check on the progress, e.g. as proposed in this answer.

这样的处理器