问题标签 [greenlets]

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 投票
2 回答
2767 浏览

python - 阻止greenlets有问题吗?

我理解阻塞代码对于事件循环(即 NodeJS)是一种罪过,但是对于 greenlets(我认为是绿色线程)呢?运行调用阻塞函数的代码是否存在问题?

0 投票
3 回答
3535 浏览

python - 在 Linux x86_64 for PowerPC 上交叉编译 Python 的 greenlet 和 gevent

在我的 Linux x86_64 主机上,我正在尝试为我的 PowerPC 目标交叉编译一些额外的 Python 模块,特别是greenletgeventgevent-websockets。目前,我只是试图交叉构建greenlet模块。

使用来自本网站的信息:

http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html

我能够使用此设置为我的构建环境交叉编译 Python 2.7.2

使用上述脚本配置我的环境,然后尝试构建 greenlet 模块会产生:

为什么 setup.py 从/usr/include/python2.7我的主机系统中提取?我在我的目标上找不到那个目录。如何为我的目标创建它?

有什么建议么?

谢谢!

特雷弗

更新#1:

我对目标 rootfs 的主机副本的相对引用不正确。更正它并重新运行产量:

至少它找到了更多我的目标包含库,但现在我真的很难过!:(

还有什么建议吗?

谢谢!

更新#2:

通过将-save-temps标志添加到编译器(上面更新了错误),我能够保存并检查上面错误消息中提到的中间汇编代码。虚线是:

MR(移动寄存器)操作相当简单,只接受 2 个 args ( mr to-reg, from-reg)。我不知道如何添加带有附加注册号的括号。FWIW,这是上述头文件中引用的宏:

我开始怀疑这是否是编译器中的错误,因为宏看起来很简单!有什么建议么?... 谢谢!

0 投票
1 回答
849 浏览

python - PyMongo 和 gevent 的死锁

我在 Django 应用程序中一起使用 PyMongo 和 gevent。在生产中,它托管在 Gunicorn 上。

我在应用程序启动时创建了一个 Connection 对象。我有一些后台任务连续运行并每隔几秒钟执行一次数据库操作。

该应用程序还像任何 Django 应用程序一样提供 HTTP 请求。

我遇到的问题如下。它只发生在生产中,我无法在我的开发环境中重现它。当我让应用程序空闲一会儿(尽管后台任务仍在运行)时,在第一个 HTTP 请求(实际上是前几个)上,我执行的第一个“查找”操作永远不会完成。greenlet 实际上永远不会恢复。这会导致前几个 HTTP 请求超时。

我该如何解决?这是 gevent 和/或 PyMongo 中的错误吗?

0 投票
1 回答
753 浏览

python - Gevent greenlet 向父级冒泡异常

在使用 gevent 时,每当子 greenlet 抛出异常时,我希望它冒泡到父级(理想情况下让父级抛出异常)。在 greenlets 的文档中,它说这是自动完成的,但在 gevent 中似乎并非如此。

如何在 gevent 中冒泡异常?

谢谢!

0 投票
2 回答
3137 浏览

asynchronous - 如何在单个应用程序中使用 gevent 和 tornado?

我正在同一个应用程序中使用 gevent 和 tornado,以便可以抑制不支持 tornado ioloop 的库以使用 gevent 进行异步操作。我想我需要运行两个真正的系统线程,一个专用于 Tornado 的 ioloop,另一个专用于 gevent 的循环。但是,尝试在系统线程中调用任何 gevent 函数会返回not implemented Error, gevent cannot be used inside threads。因此,我也尝试了猴子修补线程,如下面的片段所示

继续……

在一个单独的进程中,在命令行上,我运行以下命令。

这允许同时检索 15 个 url,并在收到它们时返回响应。我不太明白为什么上面的代码完全有效。如果线程被 gevent 修补并变成绿色线程,这意味着一次只有一个线程在运行,这意味着当 gevent 关闭获取新响应时,tornado 的 ioloop 将阻塞并且不会处理新请求,直到旧请求回来。有人可以解释 gevent 如何与 Tornado 的 ioloop 交互吗?

0 投票
1 回答
280 浏览

python - gevent 和 socksipy

我想知道是否有人尝试使用 [gevent][1] 和 [socksipy][2] 进行并发下载。

0 投票
0 回答
1261 浏览

python - socket.io 连接上的 gevent 超时错误

我有一个包含清漆 nginx 和 2 个金字塔后端的设置,其中一个运行 socket.io 应用程序。所有堆栈都在我的本地开发计算机上正常工作,但我无法在生产计算机上使用 websocket 部分。当客户端 socket.io 尝试连接时导致 socketio 应用程序的错误的回溯:

我检查了所有 python 包版本,两台计算机都相同。还将生产计算机升级到 libevent 1.4.14b 以匹配本地计算机。

我不知道用哪种方法来调试它。帮助表示赞赏!

0 投票
2 回答
3514 浏览

python - 等到几个greenlets之一完成

我有两个函数从两个不同的连接接收数据,我应该在从其中一个连接获得结果后关闭这两个连接。

然后我生成每个函数:

gevent.joinall阻塞当前的greenlet,直到两个greenletlst都准备好。

我想等到第一个或第二个greenlet准备好:

我该怎么做?

0 投票
2 回答
2006 浏览

python - gevent pool.wait_available() 方法含义

看,人们。我们有一个关于 gevent.pool 类和 pool.wait_available() 方法的问题,两个代码片段

1.

2.

给我们类似的结果:

谁能解释 wait_available() 方法的含义?以及可能的使用情况。

=======update======== 我已经对它进行了修改,它可以正常工作,我只想知道这两个代码片段之间的区别。

0 投票
1 回答
2302 浏览

python - Python 和真正的并发线程

我已经阅读了几个小时,我可以完全弄清楚 python 多线程是如何比单线程更快的。

这个问题确实源于 GIL。如果有 GIL,而且任何时候只有一个线程真正在运行,那么多线程怎么能比单线程快呢?

我读到了一些操作 GIL 被释放(比如写入文件)。这就是使多线程更快的原因吗?

关于绿叶。这些对并发有什么帮助?到目前为止,我看到的所有目的都是在函数和不太复杂的屈服函数之间轻松切换。

编辑:在世界上,像 Tornado 这样的服务器如何处理数千个同时连接?