【问题标题】:Django Parallel ProcessingDjango 并行处理
【发布时间】:2015-10-13 09:08:54
【问题描述】:

我有一个简单的 Django 项目。

用户每次点击首页,都会进行一些操作,并据此生成视图。现在的问题是当用户点击主页时,有时基于网络连接的操作需要很长时间。如果同时有新用户点击主页,他必须等待前一个用户的请求得到服务,然后页面才会被渲染。

我发现 Celery 是用于任务调度和排队的。但我想知道 Celery 是否是我需要的。我需要每个用户独立处理他的请求而不是排队。

我的项目是单个应用项目,一次最多可接收 100 个用户。

谢谢。

【问题讨论】:

  • 您在执行什么操作?同步操作永远不会在 Web 应用程序上工作(你打算对 1^n 个用户做什么?或者即使所有 100 个用户都在做同样的事情?)

标签: python django parallel-processing multitasking


【解决方案1】:

如果需要完成漫长的过程才能为请求提供服务并生成正确的响应,那么您不能使用 Celery。

Django 附带的调试网络服务器是一个多线程单进程服务器,但实际上非常有限and should not be used in production

如果您使用 gunicorn 或其他 wsgi 服务器,您可以在多个进程中运行您的应用程序,但如果您执行繁重的处理,您将很快达到限制。

在我看来,解决方案是要么改变你处理东西的方式,要么提前准备,要么提供请求并在后台进行处理,你可以向用户显示Please wait... 消息,在这里你可以用Celery来做处理。

另一种解决方案是使用基于事件的网络服务器,例如 Twistedcycloneothers

【讨论】:

  • 感谢您的回答。帮助我朝着正确的方向前进。将其部署在生产环境中的 apache 中。
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 2019-09-16
  • 2023-03-31
相关资源
最近更新 更多