问题标签 [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 - 如何真正在python中实现超时?
如何在python中真正实现超时?http://eventlet.net/doc/modules/timeout.html
代码如下:
永远不会超时。我哪里错了?
PS我换了:
和:
为异常添加 False,现在它运行良好:
改成:
但它仅适用于 eventlet.sleep(0.1)
例如此代码错误:
我只是添加 sleep 0 秒:
它就像一个魅力。
解决了
python - 使用 eventlet 时 getaddrinfo() 似乎阻塞
我使用 eventlet 运行我的 Django-celery 任务。但是有些东西仍然在阻塞。我使用了eventlet的阻塞检测,发现getaddrinfo()是阻塞的。我在某处读到我必须安装“dnspython”包,但不管有没有都没有区别。目前已安装:
有趣的是,阻塞出现在 eventlet 的代码(eventlet.green.socket)中的某个地方。
我像这样运行芹菜:
我的自定义 async_manage.py (部分):
这是我得到的错误:
你知道如何解决这个问题吗?这对我来说毫无意义。
提前致谢, 马蒂亚斯
mysql - 使用 MySQL 的 Gunicorn 多线程
我正在尝试运行一个简单的 NGnix + Gunicorn + Django + MySQL(AWS 上的 RDS)堆栈,但显然某些 MySQL 查询发生的任何事情都会减慢并锁定服务。
为了防止这种情况,我开始使用 eventlet(它也可以与 Celery 配合使用),但修补 MySQLdb 似乎会导致性能损失(2-3x 响应时间)和不稳定(可能会在重启期间锁定所有数据库连接几秒钟)。
具有相同逻辑的 Celery + eventlet 似乎工作得很好,那我错过了什么?
谢谢!
python - 修补 python eventlet 以解决 Ubuntu 12.04 中的 OpenSSL TLS 1.1 错误
我刚刚在带有 TLS 连接的 Ubuntu 12.04 中的 OpenSSL 中遇到了一个错误,我需要解决它。错误简介 - OpenSSL 实现中的 Ubuntu 12.04 错误使使用 TLS 1.1 对 HTTPS 的各种调用随机失败。
上面的链接还提供了通常的 python 解决方法,它基本上强制使用 TLS 1.0 而不是 TLS 1.1。然而,这种解决方法并不适合我开箱即用,因为我使用的是实现非阻塞 HTTP 请求的 eventlet 库。
据我了解 - eventlet 库重新定义了一些与此事相关的httplib.HTTPSConnection
类,特别是 - 我需要修补以强制执行 TLS 1.0 的类。
所以问题是——我到底需要在 eventlet 中修补什么,或者重新定义什么来强制通过 eventlet 进行非阻塞 HTTP 调用的 TLS 1.0 连接?
python - 配合 eventlet 和系统调用
我的项目使用eventlet
,现在我必须异步读写文件(实际上是一个设备)。我试图eventlet.tpool.execute()
运行读取线程,但它阻塞了主循环。
我的问题是,如何同时运行读取线程和 eventlet 线程?这两个线程是否有可能以某种方式进行通信?
速写:
然后doSomethingElse()
永远不会被调用。
django - eventlet - green threads on a django based web service
I have a web service that creates images from geographic features and return it to a map using django framework. This is a tiling map service (TMS)
The web sercive is called through an url such: http://host.com/TMS/map_id/x/y/z.png where map_id, x, y and z are variables used to generate the images.
This url call a python function which return the images in a map client (OpenLayers). When moving in the map the user call a bunch of requests on this webservice like http://host.com/tiling/1/0/1/1.png, http://host.com/tiling/1/1/0/1.png, etc
I would like to use eventlet to thread the function of this webservice in order to generate images in parallel instead of one by a time.
Can someone help me doing this by providing cue about how to listen to a specific url (TMS url) and how to start threads on the function. Thanks a lot.
python - 如何将无限生成器提供给 eventlet(或 gevent)?
eventlet 和 gevent 的文档都有几个关于如何异步生成 IO 任务并在后面获得结果的示例。但到目前为止,所有应该从异步调用返回值的示例,我总是在所有对spawn()
. 无论join()
是 , joinall()
, wait()
, waitall()
。这假设调用使用 IO 的函数是立即的,我们可以直接跳到我们正在等待结果的地方。
但在我的情况下,我想从一个可能很慢和/或任意大甚至无限的生成器中获得工作。
我显然不能这样做
因为mybiggenerator()
可能需要很长时间才能用完。因此,我必须在仍在产生异步调用的同时开始使用结果。
这可能通常是通过队列资源完成的,但我不太确定如何。假设我创建了一个队列来保存作业,从一个名为 P 的 greenlet 推送一堆作业,然后从另一个 greenlet C 弹出它们。在 C 中,如果我发现队列是空的,我怎么知道 P 是否推送了每个作业它必须推动还是只是在迭代的中间?
或者,Eventlet 允许我循环 apile
以获取返回值,但是我可以在不产生所有必须产生的作业的情况下开始这样做吗?如何?这将是一个更简单的选择。
python - 使用 python-eventlet 每分钟 100 万个工作
用例:
- 从一台服务器读取数据
- 在我的服务器上操作
- 将数据发布到其他服务器
但需要每分钟100万的吞吐量。
更多解释:-
假设有 10000 个客户,对于一个客户,我需要调用 5 个 API 并操作数据作为响应,操作后它将创建大约 30 个 API。我想将数据发布到其他服务器。
(假设:为 API 调用获取数据的服务器需要 250 毫秒,而我在其上发布数据的服务器需要 350 毫秒来发布 API 调用的数据。)
伪代码:
我们如何通过 Eventlet 编写代码,以便它可以并行执行这么多任务。还是 eventlet 能够执行这么多任务?
请回复。
python - 使用 futures.ProcessPoolExecutor 时 eventlet 挂起
我正在使用 Ubuntu 12.04 服务器 x64、Python 2.7.3、futures==2.1.5、eventlet==0.14.0
有人遇到同样的问题吗?
如果您取消注释该行,此代码将挂起。我只能通过按 Ctrl+C 来停止它。在这种情况下,将打印以下 KeyboardInterrupt 回溯:https://gist.github.com/max-lobur/8526120#file-traceback
这适用于 ThreadPoolExecutor。
任何反馈表示赞赏
python - python线程和绿色线程中的锁定行为有什么区别?
通常的python线程和greenthread(eventlet)中的行为threading.Lock()
之间有什么区别吗?threading.Semaphore()