问题标签 [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 投票
1 回答
1556 浏览

python - 带有 gevent 的显式 switch()

我有一个在 gevent 中运行的原始生产者/消费者脚本。它启动了一些将事物放入 a 的生产者函数gevent.queue.Queue,以及一个将它们再次从队列中取出的消费者函数:

如果我让 gevent 隐式处理调度(例如通过调用 time.sleep 或其他一些gevent.monkey.patch()ed 函数),它工作得很好,但是当我显式切换到消费者(替换time.sleep为注释掉的switch调用)时,gevent 会引发 AssertionError:

我想使用显式切换,因为在生产中我有很多生产者,gevent 的调度没有为消费者分配几乎足够的运行时间,并且队列变得越来越长(这很糟糕)。或者,非常感谢您对如何配置或修改 gevent 的调度程序的任何见解。

这是在 Python 2.7.2、gevent 1.0.1 和 greenlet 0.4.5 上。

0 投票
1 回答
2849 浏览

python - Gevent 被烧瓶阻止甚至使用猴子补丁

我正在使用flask+gevent来构建我的服务器,但是名为'getall'的gevent被flask阻止了,所以'getall'函数无法在这段代码中打印消息。猴子补丁正在使用中。

0 投票
0 回答
35 浏览

gevent - rdflib 和 gevent 可以很好地协同工作吗?

rdflib(例如,SPARQL/SPARQL 更新)在异步 Web 框架设置(gunicorn/pyramid,Flask,...)中是否与 gevent 一起工作得很好?目标之一是将运行时间较长的(但不需要外部消息队列的时间)卸载到他们自己的 greenlet 工作人员中。

无论哪种方式都找不到任何明确的指针。并且检查它不是可靠的选择,因为找出细微的影响需要高级测试设置。

更新:我找到了一个用于起源可视化的 Flask 应用程序,它正在做 socket.io,并使用 gevent/gunicorn 和 rdflib。所以,我想,这个组合是兼容的。不确定是否有警告。

0 投票
0 回答
960 浏览

django - LoopExit:“此操作将永远阻塞”,使用 Redis 作为 Django 上的缓存

我使用 Django 1.7 python 2.7。在 Django 中,我有几个功能。一个函数准备必要的信息并将其存储在 Redis 中。之后另一个函数异步启动几次,从 Redis 获取信息,计算一些数据并返回给客户端。该功能从浏览器运行,我有下一个错误:

在五次中,函数执行了 3-4 次,或者可以执行全部 5 次。

UPD(添加代码)。我的代码是这样的:

在功能initial_data中,我从数据库中收集用户信息,这是过滤报告并将其存储在 Redis 中所必需的。FE 知道所有KEYS('query_1', 'query_2', 'query_3', 'query_4', 'query_5') 并且一次用一个键向函数异步发送请求data

0 投票
1 回答
360 浏览

python - Gevent/greenlet 从连接处理程序返回时关闭套接字。

在 gevent 1.0.2 中,我正在使用 StreamServer ,并且在处理连接时,我将套接字保存在 dict 中以发送等待队列的事件,这在 1.0.2 中可以正常工作,但在最新版本 1.1.x 中则不能从连接处理程序返回时关闭。我怎样才能使它与python中的最新gevent一起工作。

我只是在字典中保留打开的套接字,当有一些事件时广播事件。这在 1.0.2 版本中运行良好,但在最新的 1.1.x 中,当从连接处理程序返回时,它只会关闭此套接字。

0 投票
3 回答
1113 浏览

python - 使用 gevent 下载图像

我的任务是从给定的 url 列表中下载 1M+ 图像。推荐的方法是什么?

在阅读了Greenlet Vs之后。我调查过的线程gevent,但我无法可靠地运行它。我玩了一个包含 100 个 url 的测试集,有时它在 1.5 秒内完成,但有时它需要超过 30 秒,这很奇怪,因为每个请求的超时*为 0.1,所以它永远不会超过 10 秒。

*见下文代码

我也调查过,grequests但他们似乎在异常处理方面存在问题。

我的“要求”是我可以

  • 检查下载时出现的错误(超时、损坏的图像......),
  • 监控处理图像数量的进度和
  • 尽可能快。
0 投票
1 回答
324 浏览

python - 有没有可能睡着不屈服?

我想使用grequests.send它们之间的短暂但精确的延迟(比如 20 毫秒)发送两个异步请求。我只想在发送两个请求后处理响应。

在两个发送之间放置 atime.sleep不起作用,因为sleep在发送请求 2 之前,请求 1 的响应处理程序产生,因此请求 2 发送较晚。

如何确保上面的整个块以原子方式运行,以确保尽可能接近请求之间的预期等待时间,而无需忙于等待?

0 投票
1 回答
1211 浏览

python-3.x - 使用外部 python 插件运行 asyncio 循环引擎

我安装了以皇帝模式运行的 uWSGI。Vassals 使用不同的 python 版本,所以我不能在 uWSGI 二进制文件中嵌入 Python 插件。

话虽如此,我想在其中一个 vassal 中使用 asyncio 循环引擎,但我不知道如何运行未嵌入的 asyncio 插件和 greenlet 插件。


到目前为止我已经尝试过:

  • 将 asyncio 和 greenlet 嵌入到 uWSGI 中,使用:

    构建uWSGI。但这也会嵌入 python 插件,我不想要它。

  • 使用以下命令将 asyncio 和 uWSGI 构建为外部插件:

    构建插件,但插件将无法加载:

    /usr/local/lib/uwsgi/asyncio_plugin.so:未定义符号:向上
    /usr/local/lib/uwsgi/greenlet_plugin.so:未定义符号:向上

    在日志中。

    //编辑
    我发现python插件必须在设置中的asyncio和greenlet之前启用,所以错误不再发生,但greenlet不起作用,当前greenlet中没有父级。

我还能尝试做什么?我敢打赌,在 python3.4 插件中嵌入 asyncio 和 greenlet 会起作用,但我不知道该怎么做,甚至不知道它是否可能。

目前我正在使用带有内置必需插件的第二皇帝,但由于平台限制,我不能再使用该解决方案。

0 投票
0 回答
249 浏览

python - C ++中的python greenlet样式上下文切换

前段时间我在这里问了一个关于多线程的问题,但没有得到任何答案,所以我将其删除并在此处重新表述。

C 或 C++(我绝不是暗示它们是同一种语言)库中是否有任何功能可以用来模拟切换上下文,就像你可以使用python greenlets 一样

任何不被弃用的东西都将不胜感激!

谢谢!

0 投票
2 回答
10552 浏览

python - Issue understanding Warning: Unbrewed header files were found in /usr/local/include

After running brew doctor, I get this error related to a header file that I'm not sure about. I don't know what greenlet is, so I'm apprehensive to remove it as suggested in this post.

Please answer the following questions:

1. What does the error Unbrewed header files actually mean?

2. Should I remove the file listed in the error?