问题标签 [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.
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 上。
python - Gevent 被烧瓶阻止甚至使用猴子补丁
我正在使用flask+gevent来构建我的服务器,但是名为'getall'的gevent被flask阻止了,所以'getall'函数无法在这段代码中打印消息。猴子补丁正在使用中。
gevent - rdflib 和 gevent 可以很好地协同工作吗?
rdflib(例如,SPARQL/SPARQL 更新)在异步 Web 框架设置(gunicorn/pyramid,Flask,...)中是否与 gevent 一起工作得很好?目标之一是将运行时间较长的(但不需要外部消息队列的时间)卸载到他们自己的 greenlet 工作人员中。
无论哪种方式都找不到任何明确的指针。并且检查它不是可靠的选择,因为找出细微的影响需要高级测试设置。
更新:我找到了一个用于起源可视化的 Flask 应用程序,它正在做 socket.io,并使用 gevent/gunicorn 和 rdflib。所以,我想,这个组合是兼容的。不确定是否有警告。
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
。
python - Gevent/greenlet 从连接处理程序返回时关闭套接字。
在 gevent 1.0.2 中,我正在使用 StreamServer ,并且在处理连接时,我将套接字保存在 dict 中以发送等待队列的事件,这在 1.0.2 中可以正常工作,但在最新版本 1.1.x 中则不能从连接处理程序返回时关闭。我怎样才能使它与python中的最新gevent一起工作。
我只是在字典中保留打开的套接字,当有一些事件时广播事件。这在 1.0.2 版本中运行良好,但在最新的 1.1.x 中,当从连接处理程序返回时,它只会关闭此套接字。
python - 使用 gevent 下载图像
我的任务是从给定的 url 列表中下载 1M+ 图像。推荐的方法是什么?
在阅读了Greenlet Vs之后。我调查过的线程gevent
,但我无法可靠地运行它。我玩了一个包含 100 个 url 的测试集,有时它在 1.5 秒内完成,但有时它需要超过 30 秒,这很奇怪,因为每个请求的超时*为 0.1,所以它永远不会超过 10 秒。
*见下文代码
我也调查过,grequests
但他们似乎在异常处理方面存在问题。
我的“要求”是我可以
- 检查下载时出现的错误(超时、损坏的图像......),
- 监控处理图像数量的进度和
- 尽可能快。
python - 有没有可能睡着不屈服?
我想使用grequests.send
它们之间的短暂但精确的延迟(比如 20 毫秒)发送两个异步请求。我只想在发送两个请求后处理响应。
在两个发送之间放置 atime.sleep
不起作用,因为sleep
在发送请求 2 之前,请求 1 的响应处理程序产生,因此请求 2 发送较晚。
如何确保上面的整个块以原子方式运行,以确保尽可能接近请求之间的预期等待时间,而无需忙于等待?
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 会起作用,但我不知道该怎么做,甚至不知道它是否可能。
目前我正在使用带有内置必需插件的第二皇帝,但由于平台限制,我不能再使用该解决方案。
python - C ++中的python greenlet样式上下文切换
前段时间我在这里问了一个关于多线程的问题,但没有得到任何答案,所以我将其删除并在此处重新表述。
C 或 C++(我绝不是暗示它们是同一种语言)库中是否有任何功能可以用来模拟切换上下文,就像你可以使用python greenlets 一样?
任何不被弃用的东西都将不胜感激!
谢谢!
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?