问题标签 [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 投票
4 回答
20892 浏览

python - Eventlet 或 gevent 或 Stackless + Twisted、Pylons、Django 和 SQL Alchemy

我们将 Twisted 广泛用于需要大量异步 io 的应用程序。在某些情况下,东西是受 cpu 限制的,为此我们产生了一个进程池来完成工作,并拥有一个跨多个服务器管理这些进程的系统——所有这些都在 Twisted 中完成。效果很好。问题是很难让新的团队成员跟上进度。在 Twisted 中编写异步代码需要接近垂直的学习曲线。就好像人类天生就不会那样想。

我们可能正在考虑采用混合方法。也许将 xmlrpc 服务器部分和进程管理保留在 Twisted 中,并在代码中实现其他内容,至少在某种程度上看起来是同步的,而不是同步的。再说一次,我喜欢显式而不是隐式,所以我必须多考虑一下。无论如何到greenlets - 这些东西的效果如何?所以有 Stackless,正如你从我的盖伦特化身中看到的那样,我很清楚它在 CCP 的旗舰 EVE Online 游戏中的第一手使用取得了巨大成功。Eventlet 或 gevent 呢?好吧,目前只有 Eventlet 与 Twisted 一起工作。然而,gevent 声称更快,因为它不是纯 python 实现,而是依赖于 libevent。它还声称具有较少的特质和缺陷。事件据我所知,它由 1 个人维护。这让我有点怀疑,但所有伟大的项目都是这样开始的……然后是PyPy——我什至还没有读完那个——刚刚在这个线程中看到了它:Stackless 的缺点

太令人困惑了——我想知道到底该怎么做——听起来 Eventlet 可能是最好的选择,但它真的足够稳定吗?有没有人有这方面的经验?我们是否应该使用 Stackless,因为它已经存在并且是经过验证的技术 - 就像 Twisted 一样 - 它们确实可以很好地协同工作。但我仍然讨厌必须有一个单独的 Python 版本才能做到这一点。该怎么办....

不过,这个有点令人讨厌的博客文章对我来说是一针见血:Asynchronous IO for Grownups I don't get the Twisted is like Java remark as to me Java通常是你处于线程思维方式的地方,但无论如何。尽管如此,如果那个猴子补丁真的像那样工作,那么哇。哇!

0 投票
0 回答
359 浏览

python - Eventlet 抛出无法理解的异常

我正在使用此处找到的 Eventlet 示例代码:http: //eventlet.net/doc/examples.html#producer-consumer-recursive-web-crawler

在运行的中途,我遇到了以下多个实例:

0 投票
1 回答
2359 浏览

python - Twisted,gevent eventlet - 我什么时候使用它们

在什么情况下,像 eventlet/gevent 这样的东西会比 twisted 更好?Twisted 似乎是最常用的,但 eventlet/gevent 必须有一些优势......我不是在寻找特定场景的答案,只是泛泛而谈。

0 投票
2 回答
287 浏览

concurrency - 高性能(但愚蠢的)网络服务器

我正在尝试编写一个非常简单的 Web 服务器,它执行以下操作:

  1. 接收请求。
  2. 回复一个小文件;关闭连接。
  3. 处理请求数据。

换句话说,响应不依赖于请求信息,但请求信息仍然很重要。数据将被持久化,然后用于分析。

我尝试使用一些事件驱动的网络框架来做到这一点,但它们似乎都保持连接,直到处理代码返回。这是有道理的,因为通常服务器在响应后不必做任何工作,但在我的情况下,不需要这种特殊的做事方式。

理想情况下,服务器应该继续响应请求,同时将请求数据添加到堆栈中,该堆栈在持久化时被清空。

我们希望每秒处理数千个请求。事件驱动编程真的是要走的路,还是我应该坚持(传统)线程?哪种语言或框架更适合这种工作?

谢谢。

0 投票
2 回答
14172 浏览

python - 从 S3 存储桶下载 300 万个对象的最快方法

我尝试过使用 Python + boto + 多处理、S3cmd 和 J3tset,但都在苦苦挣扎。

有什么建议,也许是您一直在使用的现成脚本或我不知道的其他方式?

编辑:

eventlet+boto 是一个值得的解决方案,如下所述。在这里找到了一篇很好的 eventlet 参考文章http://web.archive.org/web/20110520140439/http://teddziuba.com/2010/02/eventlet-asynchronous-io-for-g.html

我在下面添加了我现在正在使用的 python 脚本。

0 投票
1 回答
288 浏览

python - 这段代码有什么问题?

我正在使用下面的代码来连接到 couchDb 实例的链接,因此我可以测试如果数据库运行缓慢,GUI 会发生什么情况。

该代码基于端口转发器示例。

当我阅读、删除和更新文档时,它按预期工作,但是当我插入 GUI 时会挂起。当我直接链接时,错过了上面的代码,插入工作得很好!

与数据库对话的 Python 代码是 couchDB-python (http://code.google.com/p/couchdb-python/) 并且保存和插入都执行以下语句

然而,一个有效,另一个无效。有没有人对如何调试这个有任何提示,或者可能出了什么问题?

0 投票
1 回答
3237 浏览

database - 我可以让 Django “greenlet-safe”吗?

大局是:我想在一些应用程序中使用 eventlet,该应用程序在外部使用 Django 模型时执行异步 IO。在外部使用 Django 很简单(请参阅Django:如何使用我的模型类从 Django 外部与我的数据库进行交互?),但这不是主要问题。

我认为(我没有测试过)从 greenlets 中使用 Django 是危险的。实际上,对于 psycopg2,我们有这个警告(参见http://www.initd.org/psycopg/docs/advanced.html#support-to-coroutine-libraries):

Psycopg 连接不是绿色线程安全的,不能被不同的绿色线程同时使用

在 Django 中,每个线程有一个数据库连接(对吗?),因此在使用时可能会导致可怕的场景。是否可以以某种方式手动提供连接对象?或者让它成为“greenlet-local”?

我的动机是使用来自 eventlet ( http://eventlet.net/doc/modules/db_pool.html ) 的连接池,这样我就可以加速我的 IO 绑定应用程序。

0 投票
2 回答
234 浏览

python - eventlet 上的资源

嗨,我实际上正在做一个需要实时更新的项目,所以我们正在使用 eventlet,所以你们可以参考资源来阅读有关 eventlet 的信息,因为我以前没有使用 eventlet 或任何实时库的经验。

0 投票
1 回答
678 浏览

python - eventlet 抓取和保存文件的问题

我可以使用 evenlet 从网站上删除 img 但未能将它们保存到国内目录中。以下是代码。有谁熟悉 tasklets 模型中的 I/O 操作?谢谢

0 投票
1 回答
1369 浏览

python - 在 Bottle 框架中运行 eventlet 服务器

我在bottle.py 0.9版中看到了类似的东西。是不是这个意思。我可以将瓶子服务器作为 eventlet 服务器运行。

)