Gunicorn 不会同时处理同时发生的请求

2024-01-01

我正在尝试使用 Gunicorn 及其异步工作人员来服务长时间运行的请求,但我找不到任何可以开始工作的示例。我用了这个例子here http://gunicorn.org/但在返回响应之前进行了调整,添加了一个假延迟(休眠 5 秒):

def app(environ, start_response):
    data = "Hello, World!\n"
    start_response("200 OK", [
        ("Content-Type", "text/plain"),
        ("Content-Length", str(len(data)))
    ])
    time.sleep(5)
    return iter([data])

然后我运行gunicorn:

gunicorn -w 4 myapp:app -k gevent

当我打开两个浏览器选项卡并输入http://127.0.0.1:8000/在两者中并几乎同时发送请求,请求似乎已得到处理依次地- 一个在 5 秒后返回,另一个在 1 秒后返回further5秒。

问:我猜 sleep 对 gevent 不友好?但是有 4 个工作人员,因此即使工作人员的类型是“同步”,两个工作人员也应该同时处理两个请求吗?


我刚刚遇到了同样的事情,在这里提出一个问题:请求未分配给gunicorn工作人员 https://stackoverflow.com/questions/23038678/requests-not-being-distributed-across-gunicorn-workers。结果是,浏览器似乎序列化了对同一页面的访问。我猜测这可能与可缓存性有关,即浏览器认为该页面可能是可缓存的,等到加载时发现它不是可缓存的,因此它会发出另一个请求,依此类推。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gunicorn 不会同时处理同时发生的请求 的相关文章

  • .hide("slow") 是同步方法还是异步方法?

    据我们所知 ajax 是一个异步方法 因为下一个语句之前开始执行ajax 方法已完全执行 ajax 继续并行执行其工作 并且hide 是一个同步方法 因为它立即隐藏元素 并且下一条语句将在何时执行hide 确实完成了他的全部任务 但我真的很
  • 你怎么知道无限长的承诺链何时完全结束?

    我试图使用 Promise 强制序列化一系列 Ajax 调用 用户每次按下按钮时都会进行这些 Ajax 调用 我可以成功地序列化操作 如下所示 sample async function real world this is an Ajax
  • 我什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive?

    从本质上讲 除了明显的区别之外 它们之间还有哪些区别 我什么时候应该使用哪种形式 class What public Go Thread thread new Thread new ThreadStart Go2 thread Backgr
  • 将耗时的进程从我的 ASP.NET 应用程序中移走

    我的 Asp net 应用程序生成动态 pdf 有时这需要一段时间 并且是一个相当繁重的过程 实际上我不希望我的用户等待pdf 只需在生成后将其发送到那里的邮件即可 所以我尝试了网络服务 我将一个 id 从数据库获取数据 和一些字符串传递给
  • 返回在响应的特定条件下首先执行的 future

    我正在尝试使用 completablefutures 进行 3 个休息调用 并返回第一个与特定响应匹配的调用 下面是我为其编写的示例测试代码 减去其余调用 但这似乎不起作用 即使有等待时间 我总是看到 future1 被返回 这意味着 te
  • 使用 For 循环进行异步和等待 [重复]

    这个问题在这里已经有答案了 我有一个 Windows 服务 它根据计划运行各种作业 确定要运行哪些作业后 将调度对象列表发送到迭代列表并运行每个作业的方法 问题是 由于外部数据库调用 某些作业可能需要长达 10 分钟才能运行 我的目标是不让
  • C# 中的异步方法如何工作?

    我在我的一些项目中使用异步方法 我喜欢它 因为它使我的应用程序更具可扩展性 但是 我想知道异步方法如何在后台真正工作 NET 或 Windows 如何知道调用已完成 根据我进行的异步调用的数量 我可以看到创建了新线程 但并不总是 为什么 此
  • nUnit Assert.That委托并发问题

    我的代码中遇到了一些暂时的死锁 无法解决它 简单的代码 我无法创建一个简单的调用链来重现代码InvokeChangeEvent Test public async void Test sut InvokeChangeEvent foo fi
  • 如何取消 NetworkStream.ReadAsync 而不关闭流

    我正在尝试使用 NetworkStream ReadAsync 读取数据 但我找不到如何取消调用后的 ReadAsync 作为背景 NetworkStream 由连接的 BluetoothClient 对象 来自 32Feet NET 蓝牙
  • C#中为什么需要锁和对象?

    这是我一直不明白的事情 创建一个虚拟对象几乎看起来像是一个黑客locked 就像例子一样 class Account decimal balance private Object thisLock new Object public voi
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • 如何在 C# 中捕获等待的异步方法的异常?

    我基本上想知道在 C 中我应该如何捕获通过等待的异步方法的异常await关键词 例如 考虑以下小控制台程序 其中最重要的是包含一个名为AwaitSync AwaitSync calls TestAsync 它返回一个任务 执行时会抛出异常
  • React useEffect hook 和 Async/await 自己的获取数据函数?

    我尝试创建一个从服务器获取数据的函数 并且它有效 但我不确定这是否正确 我创建了一个函数组件来获取数据 使用useState 使用效果 and 异步 等待 import React useState useEffect from react
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • 使用 Apache Async HTTP Client 从 InputStream 构造多部分请求

    我正在尝试通过 apache async http 客户端发送多部分请求 但是得到了org apache http ContentTooLongException Content length is unknown error 我确实理解为
  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • Xamarin 无法从异步获取实例

    我编写了一个通过蓝牙连接到 ESP32 的 Xamarin Forms 应用程序 现在我想从 MainPage xaml 页面的 CustomControl JoystickControl 获取值 我已经这样尝试过了 MainPage xa
  • 如何检测环境是在 Azure 托管服务工作者角色中进行暂存还是生产?

    我在托管服务中担任辅助角色 工作人员每天都会发送电子邮件 但在托管服务中 有 2 个环境 Staging 和 Production 所以我的工人角色每天发送电子邮件 2 次 我想知道如何检测工人是否处于停滞状态或生产状态 提前致谢 根据我的
  • WCF - AsyncPattern=true 或 IsOneWay=true

    我的 WCF 服务中很少有方法需要花费大量时间 生成报告和发送电子邮件 根据目前的要求 要求客户端应用程序只需提交请求 然后不等待整个过程完成 它将允许用户继续在客户端应用程序中执行其他操作 而不是等待整个过程完成 我很困惑该走哪条路 As

随机推荐