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

python - 我将如何与 gevent 创建类似“Omegle”的随机聊天?

我已经搜索了 gevent 的教程和文档,但似乎没有很多。我已经编写 Python 代码好几年了,我也可以编写 PHP + JavaScript + jQuery。

那么,我将如何创建 Omeglish 聊天,其中一个随机人连接然后等待另一个人连接?我知道 Omegle 使用 gevent,但我的网站必须同时容纳 200 - 1000 人。

除了服务器端,还应该有功能齐全的客户端,我认为它应该使用 jQuery/JavaScript 创建。

我在编码部分需要一点帮助。我可以很好地编写 Python 代码,但我不知道如何制作这种聊天系统,也不知道什么是最好的 Python 库。

图书馆不一定是 gevent,但我听说它非常适合这样的东西。谢谢。

0 投票
3 回答
29850 浏览

python - 成功运行 py.test 后模块“线程”中的 KeyError

我正在使用 py.test 运行一组测试。他们通过。伊皮!但我收到这条消息:

我应该如何去追踪它的来源?(我没有直接使用线程,而是使用 gevent。)

0 投票
2 回答
905 浏览

python - 删除 telnet 会话中的输入行

是否可以从缓冲区中删除 telnet 会话中的输入行,所以当您按下回车键时,您键入的文本会被删除,但仍会发送到 telnet 服务器?

我知道有一种方法可以发送某个字符,将光标移动到行首,然后用新的字符覆盖该行,但是由于新的行字符被放入缓冲区,我不能过去. 有没有办法解决这个问题?

示例:(第二行是用户输入)

然后按回车键,屏幕缓冲区显示:

更新:

我认为关键是将telnet客户端设置为不回显本地输入的某种模式。我发现向客户端发送一些魔法字符可以改变模式。我找到了这个例子,但我不知道它是什么意思,但它阻止了输入在 telnet 客户端中显示。然而,输入永远不会发送到服务器,所以它只是答案的一半。

也许是因为我正在逐行读取输入。我希望它被逐字符读取。不知道如何修改它来做到这一点:

0 投票
1 回答
5136 浏览

python - PyPy 和 PyPy + greenlet 中的 Stackless - 区别

新版本的 PyPy 附带集成的Stackless。据我所知,捆绑的 Stackless 与 2001 年的原始 Stackless 不同,并有延续。所以主要是带有调度程序的绿色线程框架。

Greenlet是 Stackless 的衍生版本,它提供 Stackless 绿色线程功能作为扩展模块。

PyPy使用“本机” Stackless比使用PyPy + greenlet + 一些调度程序(例如:gevent)有什么好处吗?或者问题是我不能在 PyPy 中使用这些类型的扩展?更具体地说:我知道 PyPy 有自己的 greenlet 实现(基于continulet)。但我很好奇将外部greenlet 与gevent 和PyPy 中的内部链接的可能性。

PyPy 是否带有用于 Stackless 的异步 IO 库而不是标准库?

我知道stackless本身和python的其他异步轻线程扩展(eventlet、gevent、twisted ...)。所以我不是在寻找它们之间的差异,而是来自 pypy 和无堆栈构建的优势。

0 投票
1 回答
1313 浏览

python - gevent.WSGIServer 请求方法之谜

运行 gevent 的 WSGIServer 时,我遇到了一些非常奇怪的行为。似乎通过的每个请求的方法都被错误地解释了..

如果我发送以下请求:

这是控制台中显示的内容:

为了完整起见,这是我正在运行的脚本:

会发生什么?

编辑:

我正在使用 gevent 版本:0.13.0

0 投票
2 回答
1769 浏览

python - Python、gevent、urllib2.urlopen.read()、下载加速器

我正在尝试为 Linux 构建下载加速器。我的程序使用 gevent、os 和 urllib2。我的程序收到一个 URL 并尝试同时下载该文件。我所有的代码都是有效的。我唯一的问题是 urllib2.urlopen.read() 阻止我同时运行 .read() 函数。

这是向我抛出的异常。

我的程序通过调用从 URL 获取文件字节大小来工作:

并将文件大小除以除数,从而将下载过程分成几部分。在这个例子中,我将下载分成 10 个部分。

每个greenlet都以这种方式运行一个命令:

这是我在 Pastie 上托管的代码的链接: http : //pastie.org/3253705

感谢您的帮助!

仅供参考:我在 Ubuntu 11.10 上运行。

0 投票
1 回答
1582 浏览

python - 为什么 python gevent 比串行慢?

我正在使用gevent来执行并发下载。
基于示例,这是代码:

我的问题是上面的代码比串行版本花费的时间要长得多,并且在大多数情况下它会超时。这是更快的串行版本:

0 投票
2 回答
2403 浏览

python - 使用 Gevents 异步生成函数

我正在接受 Gevents(用于异步功能的 python 库)并编写了一个非常小的程序来了解它是如何工作的,但结果非常令人困惑。下面是代码

无论我运行多少次,我都会得到输出

有一个类似的例子,作为 gevent教程的一部分。

异步功能非常明显。我所做的就是在代码中添加睡眠功能。输出不应该是这样的吗?

0 投票
2 回答
24491 浏览

python - 使用带有线程的 gevent 猴子补丁使线程连续工作

我正在使用gevent,我正在修补所有内容。
似乎猴子修补会导致线程连续工作。

我的代码:

所以线程没有按预期工作。
但是,如果我删除monkey.patch_all()它,它工作正常。
问题是我需要monkey.patch_all()使用 gevent (现在显示在上面的代码中)

我的解决方案:

我改变了

所以我没有修补线程。

0 投票
2 回答
4665 浏览

python - 即使所有队列项目都已用尽,Gevent 线程也未完成

我正在尝试在 Gevent 中设置一个简单的生产者-消费者系统,但我的脚本没有退出:

我无法找到关于使用 Gevent 的好的示例/教程,所以我在上面粘贴的内容是我从互联网上拼凑出来的。

多个工作人员被激活,项目进入队列,但即使队列中的所有内容都完成,主程序也不会退出。我必须按CTRL ^ C

我究竟做错了什么?

谢谢。

附带说明:如果我的脚本有什么可以改进的地方,请告诉我。简单的事情,例如检查队列何时为空等。