【发布时间】:2012-08-04 17:11:30
【问题描述】:
我有一个想要迁移到 dotcloud 的 django 应用程序。 Django 内部和我的应用程序中的许多操作都不是异步的,即它们阻塞线程直到它们完成。 当我使用 Apache 时,这并没有造成问题,因为每个请求都会打开一个不同的线程。但在 dotcloud 使用的 nginx/uwsgi 中似乎并非如此。 表面上看,uwsgi 有一个 --enable-threads 和 --threads 选项可以用于多线程,但是:
- 不清楚 uwsgi dotcloud 使用什么版本,是否支持这些功能
- 由于我没有其他人问过这个问题,我想知道这是否真的是让并发请求运行的正确方法(使用线程)
【问题讨论】:
-
等等,nginx 上的 Django 一次只能处理一个请求?还是我误会了?
-
Django 本身不处理多线程,它取决于它使用的 wsgi 层(或任何高于它的层)。您可以通过使用不同配置的 gunicorn 或 Django 上面类似的东西来实现不同形式的并发(进程、线程、gthreads)
-
我几天前看过,据我所知,默认情况下配置的 uwsgi 包 Dotcloud 使用 Supervisord 来运行许多 uswsgi 工作人员,这允许您的应用程序提供更多服务一次不止一个请求。不过不要把它当作福音,因为我不是这方面的专家。
标签: django multithreading apache dotcloud