使用 Gevent 和 WSGI 阻止调用

2024-04-18

我刚刚开始使用协程并阅读了 gevent 和 greenlet。为了进行测试,我通过 gevents pywsgi 模块提供了此代码:

from gevent.pywsgi import WSGIServer
import gevent

def hello_world(env, start_response):
    gevent.sleep(5)
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ["<b>hello world</b>"]

print 'Serving on 8088...'
WSGIServer(('127.0.0.1', 8888), hello_world).serve_forever()

我期望的结果是每个请求在显示文本之前都会有 5 秒的延迟。然而,会发生的情况是,每个请求都会通过调用 gevent.sleep() 排队,如果在第一个请求之后立即发起第二个请求,那么第二个请求将花费近 10 秒的时间。

serve_forever 函数不是为每个请求生成新的 greenlet 吗?


您用什么来提出请求?我怀疑问题就出在这里。

我用 ab (Apache Benchmark) 测试了你的代码并得到了这个(输出已编辑):

$ ab -c 200 -n 200 http://localhost:8888/

Completed 100 requests
Completed 200 requests
Finished 200 requests

Concurrency Level:      200
Time taken for tests:   5.048 seconds
Requests per second:    39.62 [#/sec] (mean)
Time per request:       5048.386 [ms] (mean)

ab 命令向 gevent 服务器发出 200 个并发请求。五秒后,所有请求均已完成。如果请求按您的建议排队,则此基准测试将需要 1000 秒。

我认为您的系统可能无法正确支持 greenlet,但您用于测试的方法似乎更有可能阻止每个请求。 IE。服务器支持并发,但您的客户端不支持。

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

使用 Gevent 和 WSGI 阻止调用 的相关文章

  • Quarkus Websocket 中阻塞 IO 线程

    我有一个接收数据的 websocket 我想用这些数据进行一些数据库操作 这是我的代码的简化版本 import javax enterprise context ApplicationScoped import javax enterpri
  • 碰撞时阻止移动

    我正在 XNA 中开发 2d 游戏 目前正在上物理课 我当前的任务是在一个物体与另一个物体碰撞时阻止它 我让我的游戏在两个物体发生碰撞时调用此函数 public void BlockMovement gameObject target yo
  • 发出连续的 HTTP 请求是节点中的阻塞操作吗?

    请注意 与我的问题无关的信息将被 引用 像这样 随意跳过这些 Problem 我正在使用节点代表多个客户端发出有序的 HTTP 请求 这样 客户端最初需要加载几个不同的页面才能获得所需的结果 现在只需要通过我的服务器发出一个请求 我目前使用
  • 如何从 Java 7 调用 Kotlin 挂起协程函数

    我正在尝试从 Java 7 调用 Kotlin 函数 我正在使用协程 并且这个被调用的函数正在挂起 例如 suspend fun suspendingFunction Boolean return async longRunningFunc
  • 基于 socketserver 的 Python 3 服务器关闭挂起

    我正在使用 Python 3 中的线程 SocketServer 开发一个 简单 服务器 我在实施时遇到了很多麻烦shutdown为了这 我在互联网上找到的下面的代码最初可以工作 但在通过 telnet 从客户端发送一些命令后停止工作 一些
  • Python Selector(URL路由库),经验/意见?

    有没有人有意见或经验Python选择器 https github com lukearno selector 它看起来很棒 但我对它在 pypi 上的 Alpha 状态和缺乏单元测试感到有点推迟 我最喜欢的是它简单 独立且纯粹的 WSGI
  • Django url 模板标签添加绝对文件路径

    我遇到一个问题 我的 url django 模板标记将文件路径添加到生产中的网址 这不会在我的本地开发计算机上复制 通过 urls py 设置 url about us views about us name about us 在生产中 我
  • python ssl eof 发生违反协议、wantwriteerror、zeroreturnerror

    我正在使用 gevent 为池运行许多 celery 任务 20 000 也用猴子修补所有任务 这些任务中的每一个都会调用 adwords 等第三方服务来提取数据 由于潜在的 SSL 错误 我的任务不断失败 下面是一些异常的堆栈跟踪 排名不
  • 为什么后台线程中的图形操作会阻塞主 UI 线程中的图形操作?

    我有一个后台线程正在给定文件夹中创建图像的灰度缩略图 我看到的问题是后台线程中的 Graphics DrawImage 调用似乎以某种方式阻止了主 UI 线程上的 Graphics 操作 我可能会误解我在这里看到的内容 并且直到今晚晚些时候
  • uwsgi 选项 --wsgi-file 和 --module 无法识别

    我正在尝试使用 uwsgi 运行 Django 应用程序 我发现的大多数指令都引用 wsgi file 和 module 来指定应用程序 但 uwsgi 没有提及这些选项 当我尝试使用它们时 uwsgi s tmp uwsgi sock m
  • 使用 Gevent 和 WSGI 阻止调用

    我刚刚开始使用协程并阅读了 gevent 和 greenlet 为了进行测试 我通过 gevents pywsgi 模块提供了此代码 from gevent pywsgi import WSGIServer import gevent de
  • Unity 协程在后台停止

    我的问题如下 目前我在 Android iOS 游戏中运行了几个协程 但是当我将游戏发送到后台以便用手机尝试其他操作时 这些协程会停止 只有在我返回游戏后才恢复 有什么办法可以让协程在游戏在后台时继续运行吗 Android 将按设计暂停您的
  • 错误:无法为 gevent 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

    我正在使用Python 3 9 我尝试安装 python 包 pip exe install gdbgui 0 13 2 0 但这给了我一个错误 ERROR Failed building wheel for gevent Failed t
  • 使用java实现网站家长控制

    我想用java编写一个独立的应用程序来控制对受限网站的访问 而孩子们在父母不在身边时使用互联网 主要思想是根据浏览者来阻止成人 不需要的网站 用例是这样的 1 用户打开浏览器 2 我们的应用程序 在后台运行 应该弹出一个身份验证框并要求用户
  • Lua :: 如何编写加载多个CPU的简单程序?

    我还无法用 Lua 编写一个可以加载多个 CPU 的程序 自从Lua通过协程支持这个概念 http www lua org pil 9 4 html 我相信这是可以实现的 我失败的原因可能是以下之一 这在Lua中是不可能的 我写不出来 an
  • `uwsgi_modifier1 30` 指令没有按照记录从 PATH_INFO 中删除 SCRIPT_NAME

    这是我的 nginx 虚拟主机配置 debian cat etc nginx sites enabled mybox server listen 8080 root www index index html index htm server
  • 使用 gevent 在应用程序上下文之外工作的 Flask 蓝图

    我正在尝试通过 Flask mail 使用 gevent 在 Flask 中异步发送电子邮件 我正在 在应用程序上下文之外工作 我知道 app app context 但我无法让它与我的设置一起使用 我的应用程序是使用这样的应用程序工厂创建
  • 具有内部赋值延迟的阻塞和非阻塞语句之间的区别

    以下 2 个 verilog 代码片段有什么区别 1 always in out 5 in AND 2 always in out lt 5 in 考虑到always块中不存在其他行 输出会有什么不同吗 问题参考幻灯片 16 参见 o5 和
  • Java 阻止列表实现

    我在 SO 和 Google 上搜索了这个问题的答案 但到目前为止找不到合适的解决方案 我目前正在研究图形路由问题中的 LayerManager 管理器负责提供和重置一组固定的层 我想使用阻止列表来实现消费者 生产者模式 以便只要没有可用的
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用

随机推荐

  • 响应预期内容长度返回-1

    您好 当我从网络服务加载数据时 我需要创建一个进度视图 实际上预期的内容长度总是返回 1 在查看了很多相似问题之后 看起来我的网络服务从未发送内容长度 然后我检查 CURL 结果如下 lt HTTP 1 1 200 OK lt Date T
  • R Stargazer 报告系数、置信区间和精确 p 值

    我正在运行一个国家固定效应模型 进一步包括一个虚拟变量 我正在使用 Stargazer 包 但似乎无法弄清楚如何报告置信区间和确切的 p 值 如果我运行我的模型 stargazer dummy CPP title xx align TRUE
  • 我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

    这是一个幼稚的问题 但在我迄今为止看到的教程中并没有拼写清楚 如果我在一种高级语言 不是 C C 等 之上构建一个解释器 并且它有一个垃圾收集器 是否有必要为解释器本身制作一个 如果答案是肯定的 那一定是同一类宿主吧 即 如果主机是标记 清
  • android 上下文空指针异常

    我对 android Context 有一个小问题 我不知道如何解决这个问题 这是我正在使用的代码 public class TestActivity Context context public static String getPack
  • 在目录上运行 ng lint 时遇到问题

    我正在尝试使用 Angular 8 附带的 linter 但我有一段时间忽略了 TSLint 错误 我希望慢慢地清除错误 并且我正在寻找一种在整个目录上运行 linter 的方法 其中一些目录可能有多个子目录 我看过ng lint 的 An
  • Git Cherry-Pick 和冲突

    有两个不同的 git 分支 其中一个开发正在进行 Branch1 在其他分支中 一些 PoC 工作正在进行 Branch2 现在 我想挑选从 Branch1 到 Branch2 的更改 以便 Branch2 是最新的 现在 在挑选 4 或
  • 对于“未找到项目”错误页面,最合适的 HTTP 状态代码是什么

    我很好奇 项目不存在 页面最合适的 HTTP 状态代码是什么 如果页面本身不存在 我显然会使用 404 但是 我的其中一个页面有一个userid参数 它是一个 编辑用户 页面 如果不存在具有给定用户 ID 的用户 我将显示一个错误页面 但我
  • 谷歌合作实验室“ResourceExhaustedError”与 GPU

    我正在尝试微调Vgg16模型使用colaboratory但我在使用 GPU 训练时遇到了这个错误 OOM when allocating tensor of shape 7 7 512 4096 INFO tensorflow Error
  • 无空间分页库

    新分页库的所有示例都已包含在 Room 库中 Room 为我们创建了一个数据源 就我自己而言 我需要创建自定义数据源 这是我的视图模型类中的一个方法 它应该返回实时数据 我的 livedata 总是返回 null LiveData
  • Cakephp 递归条件下的分页

    我对这个问题很生气 请有人帮助我 我有这个模型 订单有很多 gt 订单项有一个 gt 产品 产品有字段vendor id 我想对包含具有特定供应商 ID 的产品的订单进行分页 我怎样才能实现这个目标 我在订单控制器中的代码 if empty
  • 转义 Django 模板变量的简单方法

    对于一个新项目 我们正在编写文档aboutDjango 模板系统 我们也将 Django 用于文档项目本身 因此 Django 会选取示例代码中的所有示例变量并尝试呈现它们 我们发现解决这个问题的唯一方法是使用 模板标签 http docs
  • 为什么 unique_ptr 不能从 T* 构造?

    举个简单的例子 这段代码有什么 问题 unique ptr
  • 使用 @Transactional 时自动装配依赖项的注入失败

    我测试了我的 DAO 但没有成功 出现以下错误 Tests in error testAccountOperations com tsekhan rssreader dao HibernateControllerTest Error cre
  • javax.activation.UnsupportedDataTypeException:没有 MIME 类型多部分/混合的对象 DCH;边界

    目前我正在编写一段监听目录的代码 当使用 apk 文件更新目录时 我会将包含此 apk 文件的邮件发送到 gmail 帐户 我在我的程序中使用 Jnotify 和 JAVA Mail 我得到的错误是 javax mail Messaging
  • 使用 jQuery 的 MediaWiki API 没有响应

    我尝试从 Wikipedia 获取一些 JSON 内容 getJSON http en wikipedia org w api php action query prop revisions rvprop content titles ti
  • 星系模拟:更改点的颜色并在鼠标悬停时显示文本

    我正在尝试创建模拟 https riteshsingh github io galaxies 4673 个最近星系的位置 星系是点 我想为鼠标悬停时的点着色并加载星系的名称 我花了很多天试图实现它 我可以更改颜色以及进行基本的光线投射 但是
  • Android 版 Google Chrome 上的字体大小显示问题

    我有一个网页 其中字体大小为body 16px 在 Android 版 Google Chrome 上 我遇到以下问题 当页面最初加载时 未定义字体大小 因此从正文继承字体大小 的元素中的字体大小大于 16px 如果您继续阅读 您将会看到
  • 如何通过 Stripe API 判断关联帐户是否完整?

    我正在尝试验证我网站上的用户是否已通过其 API 完成了 Stripe 的入职流程 我在帐户对象中没有看到任何字段 https stripe com docs api accounts https stripe com docs api a
  • 最大行大小超出允许的最大值 8060 字节

    在运行 Microsoft SQL Server 2014 时 更改表后 我收到有关行大小的警告 ALTER TABLE myTable ALTER COLUMN aRandomColumn NVARCHAR 10 Warning The
  • 使用 Gevent 和 WSGI 阻止调用

    我刚刚开始使用协程并阅读了 gevent 和 greenlet 为了进行测试 我通过 gevents pywsgi 模块提供了此代码 from gevent pywsgi import WSGIServer import gevent de