问题标签 [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 回答
613 浏览

python - 如何解决 Windows 上的“NotImplementedError”urllib2 / gevent 错误?

我正在尝试在 Windows XP 上打开一个带有 gevent 修补的 urllib2 的 url:

我在opener.open通话期间遇到了这个异常:

查看 gevent socket.py 源代码,它似乎与 Windows 上的 IPV6 相关......

有什么想法或提议可以解决这个问题吗?

编辑:我没有得到其他网址的问题(即: http: //www.bing.com)。谷歌似乎正在使用 IPV6。有没有办法强制 IPV4 响应?

0 投票
3 回答
1762 浏览

python - gevent 多个 StreamServer 侦听器

我有一个守护进程,它有到 handlerSocket 的连接池。我有两种类型的客户端,它们的协议不同。我想设置 2 个侦听器来处理每个协议并在它们之间共享连接池。在扭曲中,这相对容易完成,但在 gevent 中找不到如何做到这一点。谢谢!

0 投票
2 回答
1753 浏览

python - 实现与 gevent 兼容的工作进程池的最佳方法是什么?

设想

我有一个用 Python 和 gevent 实现的服务器进程,它通过 TCP/IP 连接到后端服务,并根据后端服务提供的更改为许多 Web 客户端(每个进程约 1000 个)提供快速变化的动态内容。该服务在 Ubuntu 10.04 上运行,不会在 Windows 上运行,因此目标平台是固定的。我们目前使用的是 Python 2.6.6。

问题

为这么多客户端提供更改可能会导致处理后端发送的更改时出现延迟,因此我的计划是将服务器拆分为多个进程。许多工作进程将为 Web 客户端提供服务,而主进程仍将连接到后端服务。我已经在使用一个单独的 greenlets 池来为 Web 客户端提供服务,但它们需要放入工作进程中。

问题

您能否为我指出一个用于 gevent 的工作进程池实现,或者弄清楚如何以正确的方式将 Python 自己的多处理模块与 gevent 一起使用?

限制

我想避免在我们的进程中引入 Python 线程,因为这会给 GIL 争用留出空间,这会通过引入延迟来降低性能。因此,如果可能的话,这将是一个干净的多处理 + gevent 解决方案。

0 投票
1 回答
595 浏览

python - Django:使用 gevent-socketio 和 WSGIHandler 时捕获/记录异常

我在这里扩展了 Cody Soyland 关于 gevent-socketio 的博客文章中提出的想法:http: //codysoyland.com/2011/feb/6/evented-django-part-one-socketio-and-gevent/

但是我很难找到正在吞噬异常的地方。在 socketio 循环期间发生的任何错误似乎都消失了,执行将停止。我已经尝试使用其他线程中关于 mod_wsgi 的建议使用 python 日志记录模块,但无济于事。

任何人都可以帮忙吗?

0 投票
3 回答
6727 浏览

python - 需要帮助理解 Python 中的 Comet(使用 Django)

在花了整整两天时间之后,我仍然无法理解 Python 中 Comet 的所有选择和配置。我已经阅读了这里的所有答案以及我能找到的每一篇博文。感觉我现在要出血了,所以对于这个问题的任何错误,我深表歉意。

我对这一切都是全新的,我之前所做的只是在 Apache 上具有 PHP/Django 后端的简单非实时站点。

我的目标是创建一个实时聊天应用程序;希望与 Django 相关联,用于用户、身份验证、模板等。

每次我读到一个工具时,它都会说我需要另一个工具,感觉就像一条永无止境的链条。

首先,任何人都可以对这项工作所需的所有工具进行分类吗?
我已经阅读了有关客户端的不同服务器、网络库、引擎、JavaScript 的信息,但我不知道还有什么。我从未想过会如此复杂。

Twisted / Twisted Web 似乎很流行,但我不知道要集成它或我还需要什么(猜想我至少需要客户端 JS)。

如果我理解正确,Orbited基于Twisted 构建的,我还需要其他什么吗?

Gevent 和 Eventlet 是否与 Twisted 属于同一类别?我还需要他们多少?

Celery、RabbitMQ 或 Redis 之类的 KV 存储在哪里出现?我不太了解消息队列的概念。它们是必不可少的吗?它们提供什么服务?

有没有我应该看的完整的聊天应用教程?

我将完全感谢任何帮助我克服这个心理障碍的人,如果我遗漏了什么,请不要犹豫。我知道这是一个非常重要的问题。

0 投票
4 回答
22226 浏览

file-upload - 在 nginx 中禁用请求缓冲

似乎 nginx 在将请求传递给上游服务器之前会对其进行缓冲,虽然在大多数情况下对我来说都可以,但它非常糟糕:)

我的情况是这样的:

我将 nginx 作为前端服务器来代理 3 个不同的服务器:

  1. 具有典型 php 应用程序的 apache
  2. 我用python和gevent构建的shaveet(一个开源comet服务器)
  3. 使用 gevent 再次构建文件上传服务器,代理上传到 rackspace 云文件,同时接受来自客户端的上传。

#3 是问题所在,现在我所拥有的是 nginx 缓冲所有请求,然后将其发送到文件上传服务器,文件上传服务器又将其发送到 cloudfiles,而不是在收到每个块时发送它(那些使上传速度更快的我可以将 6-7MB/s 推送到云文件)。

我使用 nginx 的原因是有 3 个不同的域和一个 IP,如果我不能这样做,我将不得不将文件上传服务器移动到另一台机器上。

0 投票
2 回答
5986 浏览

python - 如何检测套接字断开连接?/ 如何调用 socket.recv 超时?

我正在使用 gevent 修补套接字连接到流式服务器,并且正在使用 adsl 连接。

我不控制服务器,但在我的测试中,如果我停止服务器,我可以通过检查 recv 的结果是否为空字符串来检测断开连接,但如果我关闭我的 adsl 调制解调器 recv 永远不会退出。如果我只是断开计算机的网络电缆,它也不会返回空字符串,但是当我重新连接它时,它会返回服务器同时发送的所有内容,所以我猜路由器或调制解调器正在为我保持连接打开并在我的网络电缆断开连接时缓冲流。

我尝试将 socket.SO_RCVTIMEO 设置为几秒钟,但它没有检测到断开连接,recv 继续永远“阻塞”。这是gevent,所以它只会阻塞greenthread,但我需要尽快检测到这种断开连接,以便我可以尝试重新连接。

0 投票
3 回答
134 浏览

python - 插入似乎没有发生

我将 gevent 与 gevent-mysql 一起使用(我也使用 pymysql 来达到同样的效果)。它确实选择得很好,但无论我做什么,我都无法让它运行插入。我没主意了。

0 投票
2 回答
1242 浏览

python - 在 OSX 上构建 Cython 和 gevent

当我构建 gevent 时,我得到一个错误

我尝试使用 CFLAGS="-arch x86_64" 指定架构,但它不起作用。

0 投票
1 回答
1077 浏览

python - 如何扩展 gevent-socketio 服务器?

我正计划使用gevent-socketio(由 Jeffrey Gelens 发布)构建实时服务。出于某些目的,我需要使用许多gevent-socketio服务器来扩展我的服务。我认为它可以用作反向代理(如nginx),用于在多个Comet服务器之间分发请求并将另一台服务器用作中央会话数据存储,对吗?

我正在尝试修改 gevent-socketio 源代码,但这对我来说相当困难。