python - 如何将对一个 URL 的请求分派(dispatch)到多个线程?

标签 python multithreading flask

这是一个测试应用程序:

#!/usr/bin/env python

from flask import Flask
from time import sleep

application = Flask(__name__)
application.debug = True

@application.route('/a')
@application.route('/b')
@application.route('/c')
def a():
    sleep(10)
    return 'Hello world.'

if __name__ == '__main__':
    application.run()

此应用程序部署在 Apache 上:

WSGIDaemonProcess Test processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup Test

如果你

  • 在 00:00 请求/a
  • 在 00:01 请求/b
  • 在 00:02 请求/c

,你会

  • 在 00:10 收到/a 的回复
  • 在 00:11 收到来自/b 的响应
  • 在 00:12 收到来自/c 的响应

但是如果你

  • 在 00:00 请求/a
  • 在 00:01 请求/a
  • 在 00:02 请求/a

,你会

  • 在 00:10 收到/a 的回复
  • 在 00:20 收到/a 的回复
  • 在 00:30 收到/a 的回复

所以我猜对一个 URL 的每个请求都在一个线程中处理。现在我打算开发一个拉长服务器,我觉得我需要将每个请求都派发到一个独立的线程,以避免阻塞后续请求。我应该怎么办?

最佳答案

这个问题已经解决了。我的猜测是错误的,事实是:
在 Chrome 浏览器中,如果两个请求由相同的协议(protocol)、主机名、端口和路径组成,则在前一个请求关闭之前,后一个请求不会发送。
被阻止的不是服务器而是浏览器。

关于python - 如何将对一个 URL 的请求分派(dispatch)到多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366050/

相关文章:

python - 我想使用 pyinstaller 将 .py 文件制作成 exe 文件

python - 使用 python 将数据文件从源工作表转换为目标工作表格式。

python - Python 3 内置类型之间有什么关系?

Python/ flask - ValueError : I/O operation on closed file

python - 在 Python 中向多维数组添加新数组

c++ - 当另一个线程正在运行时,线程连接会导致段错误

java - java多线程中的生产者消费者

python - 如何使用metadata.create_all(..) 创建(在Flask 中使用flask-SA 等)SQLite DB 文件

html - 您如何将字体上传到您的网页(是否需要服务器)?

c++ - 优雅地停止 std::thread?