21得票3回答
Python:如何对基于socket的代码进行单元测试?

我正在编写一个使用 gevent.socket 通信的 Python 客户端+服务器。有没有好的方法来测试代码的套接字级操作(例如,验证 SSL 连接是否会被拒绝,因为证书无效)?或者最简单的方法是只 spawn 一个真实的服务器? 编辑:我认为,由于涉及复杂的交互,"naive" mock...

20得票10回答
如何在Python中高效地推迟执行多项任务?

我有一个进程,需要在“之后”执行一系列操作(通常在10-60秒后)。问题是这些“稍后”操作可能会很多(1000个),因此使用每个任务的Thread不可行。我知道存在诸如gevent和eventlet等工具,但其中一个问题是该进程使用zeromq进行通信,因此我需要一些集成(eventlet已经...

20得票1回答
如何优雅地停止一个附着于队列的Python多进程工作器在无限循环中运行?

我正在使用 multiprocessing.Pool 和 multiprocessing.Queue 在 Python 中实现生产者消费者模式。消费者是预先分叉的进程,使用 gevent 来生成多个任务。 这是代码的精简版本:import gevent from Queue import E...

20得票2回答
eventlet和gevent之间的性能差异是什么?

这两个库具有相似的哲学和相似的设计决策。但是,这个流行的WSGI基准测试称eventlet比gevent慢得多。是什么造成它们的性能差异如此之大呢? 据我所知,它们之间的主要区别在于: gevent故意依赖于并与libev (libevent, 以前)耦合,而eventlet定义了独立的...

20得票5回答
gevent猴子补丁和断点

我一直在使用Gevent,非常喜欢它。然而,我遇到了一个问题。断点没有被触发,也无法进行调试(使用Visual Studio Python工具和Eclipse PyDev都尝试过)。这是在调用monkey.patch_all()后发生的。 对我来说,这是一个很大的问题,不幸的是,这个问题阻碍...

19得票5回答
如何启用请求的异步模式?

以下是这段代码: import sys import gevent from gevent import monkey monkey.patch_all() import requests import urllib2 def worker(url, use_urllib2=Fals...

19得票2回答
gevent:生成大量greenlet的缺点?

接着我在评论中提出的问题this answer,关于问题"Gevent pool with nested web requests": 假设有大量任务,使用gevent.spawn(...)同时生成所有任务是否有缺点,而不是使用gevent池和pool.spawn(...)限制并发green...

19得票1回答
如何结合Django和Gevent进行基础开发?

在经过大量搜索和谷歌后,我回到了起点。我有Django 1.4,并正在寻找一个体面的工作示例来弄清楚如何让Django与gevent一起工作。我喜欢Django框架,但我需要它处理长轮询。我已经有一个使用单独的gevent处理长轮询请求以及通过http进行图像流传输的工作服务器,帧速率约为10...

18得票2回答
Python异步和CPU密集型任务?

最近我在使用Flask开发一个小项目,这是一个简单的pastebin程序,支持Pygments实现服务器端语法高亮。由于这是一项昂贵的任务,我将语法高亮委托给Celery任务队列,在请求处理程序中等待其完成。不难发现,这只不过是将CPU使用权移交给了另一个工作线程,因为等待结果仍会锁定与Web...

17得票4回答
Celery工作进程无任何错误地挂起

我有一个生产环境,用于运行Celery工人,以进行向远程服务进行POST/GET请求并存储结果的操作,它每15分钟处理约20,000个任务的负载。 问题在于工作人员无缘无故变得麻木,没有错误,也没有警告。 我尝试添加了多进程,但结果仍然相同。 在日志中,我看到执行任务的时间增加,就像s秒...