问题标签 [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.
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通常是你处于线程思维方式的地方,但无论如何。尽管如此,如果那个猴子补丁真的像那样工作,那么哇。哇!
python - Eventlet 抛出无法理解的异常
我正在使用此处找到的 Eventlet 示例代码:http: //eventlet.net/doc/examples.html#producer-consumer-recursive-web-crawler
在运行的中途,我遇到了以下多个实例:
python - Twisted,gevent eventlet - 我什么时候使用它们
在什么情况下,像 eventlet/gevent 这样的东西会比 twisted 更好?Twisted 似乎是最常用的,但 eventlet/gevent 必须有一些优势......我不是在寻找特定场景的答案,只是泛泛而谈。
concurrency - 高性能(但愚蠢的)网络服务器
我正在尝试编写一个非常简单的 Web 服务器,它执行以下操作:
- 接收请求。
- 回复一个小文件;关闭连接。
- 处理请求数据。
换句话说,响应不依赖于请求信息,但请求信息仍然很重要。数据将被持久化,然后用于分析。
我尝试使用一些事件驱动的网络框架来做到这一点,但它们似乎都保持连接,直到处理代码返回。这是有道理的,因为通常服务器在响应后不必做任何工作,但在我的情况下,不需要这种特殊的做事方式。
理想情况下,服务器应该继续响应请求,同时将请求数据添加到堆栈中,该堆栈在持久化时被清空。
我们希望每秒处理数千个请求。事件驱动编程真的是要走的路,还是我应该坚持(传统)线程?哪种语言或框架更适合这种工作?
谢谢。
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 脚本。
python - 这段代码有什么问题?
我正在使用下面的代码来连接到 couchDb 实例的链接,因此我可以测试如果数据库运行缓慢,GUI 会发生什么情况。
该代码基于端口转发器示例。
当我阅读、删除和更新文档时,它按预期工作,但是当我插入 GUI 时会挂起。当我直接链接时,错过了上面的代码,插入工作得很好!
与数据库对话的 Python 代码是 couchDB-python (http://code.google.com/p/couchdb-python/) 并且保存和插入都执行以下语句
然而,一个有效,另一个无效。有没有人对如何调试这个有任何提示,或者可能出了什么问题?
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 绑定应用程序。
python - eventlet 上的资源
嗨,我实际上正在做一个需要实时更新的项目,所以我们正在使用 eventlet,所以你们可以参考资源来阅读有关 eventlet 的信息,因为我以前没有使用 eventlet 或任何实时库的经验。
python - eventlet 抓取和保存文件的问题
我可以使用 evenlet 从网站上删除 img 但未能将它们保存到国内目录中。以下是代码。有谁熟悉 tasklets 模型中的 I/O 操作?谢谢
python - 在 Bottle 框架中运行 eventlet 服务器
我在bottle.py 0.9版中看到了类似的东西。是不是这个意思。我可以将瓶子服务器作为 eventlet 服务器运行。
)