问题标签 [eventlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7404 浏览

python - Celery + Eventlet + 非阻塞请求

requests在 celeryworkers中使用 Python 进行大量(~10/秒)API 调用(包括 GET、POST、PUT、DELETE)。每个请求大约需要 5-10 秒才能完成。

我尝试在池中运行 celery workers,eventlet并发 1000。

由于requests正在阻塞进程,因此每个并发连接都在等待一个请求。

如何使requests异步?

0 投票
1 回答
511 浏览

python - 为什么多进程无法通过 eventlet 加速发送 HTTP 请求

我有一个应用程序来发送一堆 HTTP 请求。首先,我使用eventletrequests来实现它。但是性能太低了。因此,我希望使用多进程来加速它。需要知道的是,服务器处理单个请求大约需要 200 毫秒(不包括网络传输)

但是,多进程比原始版本慢。我对这个结果感到非常惊讶!为什么?

如下所示的代码,我使用timeit来测量时间。

0 投票
1 回答
2789 浏览

python - Python打开文件太多,eventlet和multiprocessing.dummy

我有一个在 Linux 上运行的 Python 2.7 脚本,它与IOError: [Errno 24] Too many open files. 当我运行lsof -p <script_pid>以查看脚本打开了哪些文件时,我看到越来越多的anon_inode文件。

eventlet此脚本首先使用并发从 S3 下载文件。multiprocessing.dummy然后它使用多线程处理下载的文件。我已经单独运行了多线程代码,发现当我为 eventlet 包含以下猴子补丁时,它只会泄漏文件描述符:

任何关于我如何解决这个问题的想法都将不胜感激!

0 投票
2 回答
3066 浏览

django - 在 Celery 中同时使用 gevent(或 eventlet)和 prefork worker

在 Celery 文档的并发部分中,它指出:

... Eventlet 和 prefork 工作人员的混合,并根据兼容性或最有效的方式路由任务

来源:http ://celery.readthedocs.org/en/latest/userguide/concurrency/eventlet.html#concurrency-eventlet

这意味着可以让一个工作人员使用 gevent/eventlet 池实现,而另一个使用 prefork 池。

可以在创建多个工作人员时指定池实现celery multi

这启动了 2 个 gevent 工作人员,但是我如何在使用时基于每个工作人员指定池实现celery multi,以便一个工作人员使用 gevent 池而另一个使用 prefork?

celery multi文档没有提到任何关于这个特定问题的内容,源代码 ( )celery.bin.multi并没有真正表明这是可能的(除非我误读/误解了代码)。

0 投票
1 回答
3561 浏览

django - Django 超过最大 Postgres 连接数

我遇到了一个 Django 应用程序的问题,该应用程序在Gunicorn与异步eventlet工作人员一起运行时超过了与 Postgres 的最大同时连接数 (100)。当达到连接限制时,应用程序开始返回500-errors,直到可以建立新连接。

这是我的数据库配置:

这就是 Gunicorn 的启动方式:

这些是已安装的软件包:

  • djano v1.7
  • 独角兽 v19.3
  • 小事件 v0.17
  • psycopg2 v2.6

与 Gunicorn 工作人员一起运行时,Django 是否无法跨 HTTP 请求重用连接?某种第 3 方数据库连接池是我唯一的选择吗?

更新 15-03-23:异步 Gunicorn 工作人员似乎存在问题CONN_MAX_AGE如本文所述,连接确实是持久的,但从未在任何顺序请求中重用。设置CONN_MAX_AGE0强制 Django 在请求结束时关闭连接,以防止出现未使用的持久连接。

0 投票
1 回答
2090 浏览

python - Celery + Eventlet pool 并没有提高异步 web 请求的执行速度

正如celery 文档中所提到的,对于诸如异步 HTTP 请求之类的事件 I/O,eventlet 池应该比 prefork 池更快。

他们甚至提到

“在使用 feed hub 系统的非正式测试中,Eventlet 池每秒可以获取和处理数百个 feed,而 prefork 池花费 14 秒处理 100 个 feed。”

但是,我们无法产生任何与此类似的结果。完全按照描述运行示例任务urlopencrawl并打开数千个 url,似乎 prefork 池几乎总是表现得更好。

我们测试了各种并发(并发 200 的 prefork,并发 200、2000、5000 的 eventlet)。在所有这些情况下,使用 prefork 池在更短的时间内完成任务。正在运行的机器是运行 RabbitMQ 服务器的 2014 Macbook Pro。

我们希望一次发出数千个异步 HTTP 请求,并且想知道 eventlet 池是否值得实现?如果是,我们缺少什么?

python -V && pip freeze 的结果是:

使用的测试代码(几乎完全来自文档):

0 投票
1 回答
220 浏览

celery - 在 Solaris 上使用 eventlet 时出现 Celery worker 错误

我正在使用 eventlet 类和并发设置为 8 运行标准 celery worker。当这种情况发生时,这些是非常忙碌的工作人员(但在不忙时可能会发生,很难说)。

我知道我的任务没有任何泄漏,并且以每个子项设置的最大任务运行它以防万一。

不过,我遇到了这些错误,我不知道为什么。据我所知,这是随机的。我的环境中有什么东西吗?已知的问题?除非我有误解,否则这似乎不是由于任务本身的错误。我错了吗?任何想法都会很棒!

此外,作为 prefork 运行时,我没有收到任何这些错误。

错误一:

错误2:

错误 3:

0 投票
1 回答
729 浏览

python - 无法使用 python eventlet 库(eventlet.timeout.Timeout)超时

我正在遍历一个列表并对列表的每个成员执行一些操作。如果一个成员花费了太多时间(在这种情况下为 1 秒),我打算通过它。然而,try语句中的块总是被处理并且永远不会超时。我不明白为什么。

0 投票
1 回答
274 浏览

timeout - 为什么在 eventlet spawn 函数中 urlopen 超时

我遇到了一个奇怪的问题:
eventlet.green.urllib2.urlopen() raise HTTP Error 408: Request Timeout。
但如果打开“# eventlet.green.time.sleep(0.1)”成功
,有人知道为什么吗?多谢!

测试.py:

结果:

0 投票
1 回答
772 浏览

python - Eventlet 超时未退出

为什么 eventlet 允许它完成 6 秒,而它应该在 5 秒后退出缩进?