问题标签 [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.greenthread.sleep VS time.sleep
我们在 eventlet green-threads + monkey-patching 上运行服务器。我需要通过定期检查来实现等待循环,并且我想把 sleep 放在里面。
之间有什么区别:
在猴子修补的环境中?我想知道猴子补丁是否可以处理 time.sleep
python - Prevent greenthread switch in eventlet
I have a Django/Tastypie app where I've monkey patched everything with eventlet.
I analysed performance during load tests while using both sync and eventlet worker clasees for gunicorn. I tested against sync workers to eliminate the effects of waiting for other greenthreads to switch back, and I found that the memcached calls in my throttling code only take about 1ms on their own. Rather than switch to another greenthread while waiting for this 1ms response, I'd rather just block at this one point. Is there some way to tell eventlet to not switch to another greenthread? Maybe a context manager or something?
python - 阻塞执行直到条件
我正在使用 eventlet 并且有两个主要进程正在运行。其中一个进程充当生产者,另一个充当消费者。问题是,我不想使用 eventlet 包中的队列,而是想使用 db。使用队列我可以简单地传递 (block=True) 作为参数,并且 eventlet 将负责阻塞消费者例程的执行,直到生产者将某些东西放入队列中。如果我用 db 替换队列,我如何有效地实现阻塞逻辑。
python - Can you use an eventlet pool within another eventlet pool?
I'm using an eventlet celery worker and want to know if it's safe to use a pool of greenthreads inside one of my tasks.
python - celery 可以将协程作为有状态/可恢复的任务协同运行吗?
我目前正在研究 Celery 用于视频处理后端。基本上我的问题如下:
- 我有一个前端 Web 服务器,它同时处理大量视频流(大约数千个)。
- 每个流必须独立并并行处理。
- 流处理可以分为两类操作:
- 逐帧操作(不需要有关前一帧或后一帧的信息的计算)
- 流级操作(在有序、相邻帧的子集上工作的计算)
鉴于第 3 点,我需要在整个过程中维护和更新帧的有序结构,并将该结构的子部分的农场计算提供给 Celery 工人。最初,我考虑按如下方式组织事情:
这个想法是celery worker 1
执行主要是 I/O-bound的长时间运行的任务。本质上,这些任务只会做以下事情:
- 从前端服务器读取帧
- 从它的 base64 表示中解码帧
- 将其排入上述有序数据结构(
collections.deque
当前的对象)中。
任何受 CPU 限制的操作(即图像分析)都被运送到celery worker 2
.
我的问题如下:
我想将协程作为任务执行,这样我就有一个长时间运行的任务,我可以yield
从中不阻塞celery worker 1
的操作。换句话说,我希望能够做类似的事情:
有没有办法让基于协程的任务无限期地运行,理想情况下在它们被yield
编辑时产生结果?
eventlet - greenthread.sleep 做什么?
我对 eventlet 很陌生,对 sleep() 有一些疑问
我用一小段代码进行了测试。
一开始我生成了3个greenthreads,然后调用了greenthread.sleep(0),然后这3个greenthreads都来执行其中的函数。这是怎么回事?
sleep() 是否意味着执行所有产生的greenthread?我们传入的参数 0 是什么意思?
这是代码:
python - How does greenthread get scheduled?
In my Python program, I use eventlet to create a lot of greenthreads, just want to know if the current greenthread sleeps, which one of the rest will get scheduled and run? Any scheduler in the eventlet?
Thanks!
python - 使用 openssl 的 apns_client 在 eventlet.monkey_patch() 上失败
所以我可以使用 apns_client 发送消息(最近因为 ssl 错误而使用 apns_clerk)
但现在我需要使用 eventlet 来实现非阻塞。
所以我被建议在一开始就去猴子补丁所有的图书馆。
所以我愿意
导入 eventlet eventlet.monkey_patch()
问题是现在我收到此错误并且无法发送消息:-
'警告:apns_clerk.backends.stdio:无法建立到('gateway.sandbox.push.apple.com',2195)的套接字/SSL连接(最后一次调用):文件“build/bdist.linux-x86_64/ egg/apns_clerk/backends/stdio.py”,第 168 行,在 _open_connection self._connect_and_handshake() 文件“build/bdist.linux-x86_64/egg/apns_clerk/backends/stdio.py”,第 205 行,在 _connect_and_handshake self._connection .do_handshake() WantReadError'
python - 如何在 Python 2.7 中尽可能快地发送 HTTP 请求
我需要实现一个脚本来尽快发送 HTTP 请求。我试过eventlet + requests。如下所示的代码,请注意我已将超时值设置为1 秒。
但是我遇到了一个奇怪的问题,那就是一些请求的经过时间会超过 1 秒。最大的大约是11 秒。为什么?
在这种情况下,eventlet + 请求仅比串行模型快 4 ~ 6 倍。有没有更好的方法来加快这个过程?
python - Eventlet spawn_n 在使用 thread = True 进行猴子修补后什么也不做
我有一个基于 Flask 的程序(对我而言)基本上等同于 SO 答案中的示例https://stackoverflow.com/a/14180227(来源:https ://github.com/stackforge/ironic-discoverd/ blob/master/ironic_discoverd/main.py),简化:
当我使用 eventlet.monkey_patch(thread=False) 一切都很好。当我设置 thread=True 时,eventlet.greenthread.spawn_n(例如https://github.com/stackforge/ironic-discoverd/blob/master/ironic_discoverd/introspect.py#L76)在这里什么都不做,即控制永远不会产生到它,虽然 Flask 应该已经打补丁了。
有任何想法吗?
Eventlet 0.15.2、Python 2.7.5、Flask 0.10.1