小编Mol*_*ins的帖子

Waitress 如何处理并发任务?

我正在尝试使用 Django 和 Waitress 构建一个 python 网络服务器,但我想知道 Waitress 如何处理并发请求,以及何时可能发生阻塞


虽然Waitress 文档提到了多个工作线程可用,但它没有提供很多关于它们是如何实现的以及 python GIL 如何影响它们的信息(强调我自己的):

当通道确定客户端至少发送了一个完整的有效 HTTP 请求时,它会使用“线程调度程序”调度“任务”。线程调度器维护一个固定的工作线程池,可用于执行客户端工作(默认情况下为 4 个线程)。如果在调度任务时工作线程可用,则工作线程运行该任务。任务可以访问通道,并且可以写回通道的输出缓冲区。当所有工作线程都在使用中时,计划任务将在队列中等待工作线程可用。

Stackoverflow 上似乎也没有太多信息。从问题“Gunicorn 的 gthread 异步工作者是否类似于女服务员?”

Waitress 有一个主异步线程来缓冲请求,并在请求 I/O 完成时将每个请求排入其同步工作线程之一。


这些陈述没有涉及 GIL(至少从我的理解来看),如果有人能详细说明工作线程如何为 Waitress 工作,那就太好了。谢谢!

python django wsgi waitress

14
推荐指数
1
解决办法
5750
查看次数

mypy 在导入子模块时出错:模块没有属性

当我通过 mypy 检查模块时,出现以下错误:

模块“django.contrib.gis”没有属性“forms”

我正在导入这样的表格:

from django.contrib.gis import forms
Run Code Online (Sandbox Code Playgroud)

我知道这是正确的,但 mypy 显示此错误消息。

我可以像这样导入: from django.contrib import gis并使用formsasgis.forms但我不想这样做。

谁能帮我解决这个问题吗?谢谢。

python django mypy

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

django ×2

python ×2

mypy ×1

waitress ×1

wsgi ×1