问题标签 [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 - 绿线是否等于“真实”线
我从Unterstanding eventlet.wsgi.server获取了示例代码。
当我通过不同的客户端 IP 地址访问 Web 服务器时,我可以看到它们是并行处理的。通过打印hello_world
,我还可以在两个不同的绿色线程中处理它们,但在同一个操作系统线程中。
我是 Python 新手。我很好奇,如果每个 greenthread 都与底层 OS 线程相关联?
django - Gunicorn+eventlet 超时
我尝试使用 eventlet worker (django app) 运行 gunicorn:
如果我有两个不好的看法:
选项 -t (--timeout) 仅对 view2 有意义(因为工人挂起并且 gunicorn 可以理解它)。但是 gunicorn 不能处理不好的 view2。
在实际情况中,似乎我们有一些无限循环,其中包含 time.sleep() 或其他猴子修补方法,一段时间后,我们的应用程序不会挂起,但会有许多无限绿色线程并开始缓慢工作。
我的问题是我如何设置 gunicorn 以了解 view1 有什么问题并重新启动工作人员。
python - Simulating 1K web clients with different mac addresses as sources
I have the following need:
- Simulate 1K (or more) web clients (i.e., http requests) to an ip address.
- Each client has to use a different mac as source.
- Solution has to be somewhat realistic, i.e., i am hoping to get (under fundamental limits) maximum simultaneous requests from this clients.
- All this in the same machine
- Using linux.
My Question: How can I do this maximising the number of users and requests per second?
I am quite certain (99% :)) of what I am doing. I really need these requests to be send with a different mac address as source since it is a special use case based on OpenFlow switches. But it is irrelevant to expand this scenario into the question.
P.S. I am currently working in python using the Eventlet Networking Library. Python/Eventlet is not a requirement, but I include it here since i have a certain urgency and a fast implementation/modification of my code would be beneficial. I was thinking that maybe i could associate virtual interfaces with different mac addresses but i am lacking a way to specify the request interface.
python - dnspython 和“查找超时”
我正在使用 Django、Celery、Eventlet 和 dnspython 来异步解析大约 500 个 rss 提要。
当我尝试同时解析 20 多个提要时,使用 dnspython 会导致“查找超时”错误。当我卸载 dnspython 时一切正常,但我失去了一些时间,因为 dns 查找阻塞了 celery 池。您有什么想法可以解决吗?
这是我的芹菜任务代码:
我正在使用 Ubuntu 12.04 LTS
python - 在 python 中使用 Eventlet 模块而不是 threading 模块有什么好处?
特别是 Eventlet 中的 GreenPool 类。我已经测试了一些代码,将大文件作为分段上传的各个部分上传到 S3。到目前为止我注意到的是,当使用 eventlet 时,CPU 使用率要低得多。只是寻找 Eventlet 的其他优点和缺点,而不是仅使用线程。谢谢。
python - python eventlet - 何时使用 tpool VS Greenpool
我的理解是 tpool 为您提供了一个本地线程池,而 Greenpool 为您提供了绿色线程池(基本上所有绿色线程都在一个本地线程中)。
池
结果:不同的本机线程
/li>格林普尔
结果:绿色线程在同一本机线程中运行
/li>
有人可以指出我何时使用一个池与另一个池。
python - 如何设计我的 python 应用程序以跨多核并行工作
据我所知,在 Python 中,如果您在多核环境中使用普通线程,GIL 通常会运行并以负面的方式影响性能(因为线程会不断尝试获取和释放 GIL 并执行线程/处理器之间的大量上下文切换)。
这就是为什么很多人开始使用绿色线程,例如 eventlet。eventlet 库允许您让多个绿色线程协同工作并在单个处理器中完美工作(更少的同步问题、快速生成/效率等)。
我的问题是,如果我有一个多核操作系统并且要设计我的 python 应用程序,我应该遵循什么最佳实践或设计模式来利用协作线程(绿色线程)和多核处理器。
python - python eventlet - 文件异步(非阻塞)io
根据eventlet 文件:
我知道这里的非阻塞 I/O 涵盖了与套接字交互的情况。在套接字被 eventlet 绿化/修补后,套接字连接变为非阻塞。
我的问题是:这里的非阻塞 I/O 是否也包括文件 I/O?
python - 从 Eventlet GreenPile 对象中检索数据,可能与迭代器相关
我目前正在修改我前段时间制作的一个简单的监控脚本,基本上是:
建立一个字典列表,其中包含
- 网站网址
- 响应时间(默认设置为无)
- 它发回的数据(默认设置为无)
查询 (GET) 列表中的每个 URL,并用相关数据填充“时间”和“数据”字段。
将结果存储在数据库中。
该脚本过去运行良好,但随着要监控的 URL 列表的增加,完成所有查询所需的时间对我来说变得太长了。
我的解决方案是修改脚本以并发方式获取 URL。为此,我选择使用eventlet,因为文档中的这个示例几乎完全符合我的要求。
问题是,由于我的 URL 列表包含我不能pool.imap()
用来遍历我的列表的字典。(我所知道的)
Eventlet 文档有另一个类似的示例*,它使用 GreenPile 对象来生成作业,似乎我可以使用它来启动我的 URL 获取功能,但我似乎无法检索该线程的结果。
这是我的测试代码:
据我了解pile
是一个可迭代的,所以我可以遍历它,但我不能通过索引访问它的内容,这是正确的吗?
那么,如何(有可能?)我可以直接填写我的urls
清单吗?另一种解决方案可能是构建一个“平面”的 url 列表,另一个包含 url、resp 时间和数据pool.imap()
的列表,并在第一个列表中使用并用它填充第二个列表,但我宁愿保留我的字典列表。
*我不能用这个帐户发布超过 3 个链接,请参阅 eventlet 文档中的“设计模式 - 调度模式”页面。
python - gevent 中断请求/urllib2 超时
前段时间,我为我的 Django 项目编写了与外部服务交互的代码:
我在我的开发环境(python manage.py runserver
)中对其进行了测试,并且超时工作正常。然后我决定通过为 gunicorn 指定池实现来使用gevent 对其进行修补,如下所示:
现在get
调用不会被超时异常中断。我将池实现更改为eventlet,它按预期工作:
有什么办法可以修复gevent吗?