问题标签 [gevent]

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.

0 投票
1 回答
2117 浏览

python - 将 gevent 与 python xmlrpclib 一起使用

是否可以将 python 的标准库 xmlrpclib 与 gevent 一起使用?目前我正在尝试使用 monkey.patch_all(),但没有成功。

urllib2.urlopen 正在阻塞服务器。在我看来,monkey.patch_all 没有修补套接字,这就是它阻塞的原因。

0 投票
2 回答
1700 浏览

python - 为什么我不应该使用异步(事件)IO

我现在正在编写一些事件代码(在 python 中使用 gevent),我使用 nginx 作为 Web 服务器,我觉得两者都很棒。有人告诉我,有一个权衡事件,但看不到它。有人可以阐明一下吗?

詹姆士

0 投票
1 回答
981 浏览

python - 为多个 url 组织池海量下载

我正在开发波兰博客圈监控网站,并且正在寻找在 python 中处理大量内容下载的“最佳实践”。

这是工作流程的示例方案:

http://img577.imageshack.us/img577/2971/scheme.png

描述:

我已经对 rss 提要数据库(大约 1000 个)进行了分类。每隔一小时左右,我应该检查一下提要是否有一些新项目发布。如果是这样,我应该分析每个新项目。分析过程处理每个文档的元数据,并下载其中找到的每个图像。

代码的简化单线程版本:

所以我遍历 rss 提要,只下载带有新项目的提要。从提要下载每个新项目。下载并分析项目中的每个图像。

HTTR 请求出现在以下阶段: - 下载 rss xml 文档 - 下载在 rss 上找到的 x 个项目 - 下载每个项目的所有图像

我决定尝试使用 python gevent (www.gevent.org) 库来处理多个 url 内容下载

我想要获得的结果是: - 能够限制外部 http 请求的数量 - 能够并行下载所有列出的内容项。

最好的方法是什么?

我不确定,因为我对并行编程完全不熟悉(这个异步请求可能与并行编程完全无关)而且我不知道在成熟的世界中这些任务是如何完成的。

我想到的唯一想法是使用以下技术: - 每 45 分钟通过 cronjob 运行处理脚本 - 尝试在最开始时使用内部写入的 pid 进程锁定文件。如果锁定失败,请检查此 pid 的进程列表。如果找不到 pid,则可能进程在某个时候失败,并且可以安全地创建新进程。- 通过用于 rss 提要下载的 gevent 池运行任务的包装器,在每个阶段(找到新项目)将新作业添加到 quique 以下载项目,在每个下载的项目中添加用于图像下载的任务。- 每隔几秒检查一次当前运行的作业状态,如果在 FIFO 模式下有可用的空闲插槽,则从 quique 运行新作业。

对我来说听起来不错,但是也许这种任务有一些“最佳实践”,我现在正在重新发明轮子。这就是为什么我在这里发布我的问题。

谢谢!

0 投票
1 回答
2359 浏览

python - Twisted,gevent eventlet - 我什么时候使用它们

在什么情况下,像 eventlet/gevent 这样的东西会比 twisted 更好?Twisted 似乎是最常用的,但 eventlet/gevent 必须有一些优势......我不是在寻找特定场景的答案,只是泛泛而谈。

0 投票
1 回答
655 浏览

python - 尽管客户端断开连接但处理请求的 WSGI 服务器?- Python

我需要找到一个稳定的 wsgi 服务器,它不会在客户端断开连接时停止处理请求。

我不确定 uWSGI 或 gunicorn 是否符合这个标准。


忘了添加这个:

我也试图在请求得到处理之前返回响应。


有任何想法吗?

0 投票
5 回答
3342 浏览

python - 将 PyQt 与 gevent 一起使用

有人在 gevent 中使用 PyQt 吗?如何将 PyQt 循环链接到 gevent?

http://www.gevent.org/ - 基于协程的 Python 网络库,它使用 greenlet 在 libevent 事件循环之上提供高级同步 API。

0 投票
3 回答
8900 浏览

python - 我正在寻找适用于 Windows 的 Python 2.7 的 gevent

但是 gevent 依赖于 greenlet,我发现的 .msi 版本无法安装,并且 2.6 的 egg 拒绝安装。

msi 版本失败如下。

我想这意味着我的 VS 版本错误。

还有什么我可以使用的吗?

我想获得 PyQt4,这样如果无法访问数据库或需要很长时间才能回复,GUI 就不会锁定。

0 投票
2 回答
11173 浏览

python - 如何将远程 IP 传递给代理服务?- Nginx

我在 localhost 中运行服务127.0.01:8000

我正在使用以下方法代理它:

问题是我需要将用户的 IP 地址传递给服务。


有任何想法吗?

0 投票
2 回答
2915 浏览

windows - 一起使用 gevent 和 multiprocessing 与子进程通信

问题:

我可以在 Windows 上以有效的方式将多处理模块与 gevent 一起使用吗?

设想:

我有一个基于 gevent 的 Python 应用程序在 Windows 上执行异步 I/O。该应用程序主要受 I/O 限制,但也存在较高 CPU 负载的峰值。此应用程序需要通过其标准输入和标准输出来控制控制台应用程序。我无法修改此控制台应用程序,用户将能够使用他自己的自定义应用程序,只有基于文本(行)的通信协议是固定的。

我有一个使用子进程和线程的工作实现,但我宁愿将整个基于子进程的通信代码与这些线程一起移动到一个单独的进程中,以将主应用程序转回单线程。我计划为此使用多处理模块。

预读:

我一直在网上搜索并阅读了一些源代码,所以我知道多处理模块正在使用基于 Windows 上命名管道的管道实现。一对 multiprocessing.queue.Queue 对象将用于与第二个 Python 进程通信。这些队列基于该管道实现,例如 IPC 将通过命名管道完成。

关键问题是,调用传入 Queue 的 get 方法是否会阻塞 gevent 的主循环。该方法有一个超时,所以我可以将它变成一个小超时的循环,但这不是一个好的解决方案,因为它仍然会在小时间段内阻塞 gevent,从而损害其低 I/O 延迟。

我也愿意接受有关如何规避在 Windows 上使用管道的整个问题的建议,众所周知,管道很困难,有时很脆弱。我不确定在 Windows 上是否可以使用基于共享内存的 IPC。也许我可以以一种允许使用网络套接字与子进程通信的方式包装控制台应用程序,众所周知,这与 gevent 配合得很好。

如果可能,请不要质疑我的主要用例。谢谢。

0 投票
2 回答
2156 浏览

cherrypy - 在 gevent wsgi 服务器上运行 cherrypy 应用程序

我有一个现有的cherrypy 应用程序,但我想知道是否可以在gevent wsgi 服务器上运行它。我想我可以,但我无法访问 linux 服务器来测试 gevent 并且无法让它在我的 mac 上运行。

我的印象是这是可能的,因为每一方都遵循 wsgi 规范。

有没有人试过这个?

我想一个例子如下所示: