问题标签 [uvloop]

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 回答
1372 浏览

python-asyncio - 使用替代事件循环而不设置全局策略

我正在uvloop使用websocketsas

它工作正常,我只是想知道如果不将全局asyncio策略设置为uvloop. 据我了解,不设置全局策略应该可以工作,只要那里没有任何东西不使用全局asyncio方法,而是直接与传递的事件循环一起工作。那是对的吗?

0 投票
1 回答
276 浏览

python - 如何使用 httptools 从请求中获取正文?

如何content-type: Application/json使用 python httptools获取请求正文?我将它与 uvloop 一起使用。

请求类如下所示:

0 投票
3 回答
4872 浏览

python - aiohttp + uvloop 并行 HTTP 请求比没有 uvloop 慢

我正在编写一个脚本来并行进行数百万个 API 调用。

为此,我正在使用带有 aiohttp 的 Python 3.6。我原以为 uvloop 会让它更快,但它似乎让它变慢了。难道我做错了什么?

使用 uvloop:22 秒

没有 uvloop:15 秒

0 投票
2 回答
837 浏览

gunicorn - 如何在没有 WSGI 的情况下为 Gunicorn 配置 ExecStart?

Systemd 和 Gunicorn 需要某种 wsgi 文件作为最后一个参数ExecStarthttp ://docs.gunicorn.org/en/latest/deploy.html?highlight=ExecStart#systemd

使用 Django,这在主模块中为wsgi.py

但是这个文件在使用 Sanic 和 uvloop 时显然是不存在的(我相信新的协议叫做 ASGI)。我尝试用它代替它,app.py这并不奇怪:

使用Sanic的时候这个参数应该怎么配置?

0 投票
1 回答
790 浏览

cython - 如何从 C 访问 asyncio / uvloop 循环

我对 python 完全陌生,但是有一个使用 uvloop 的异步 python 应用程序,它使用我创建的 C api 模块,它也需要访问异步循环。

1) asyncio 还没有用于此的 c-api?有什么技巧可以在 C 中使用事件循环吗?这在任何地方都在讨论吗?

2) uvloop 使用我在 C 中熟悉的 libuv。如果我能抓住 uv_loop_t 指针,我就可以挂钩到循环中。我想我可以:

A) 使用 PyObject * 到 uvloop 的循环计算到 uv_loop_t* 的偏移量并使用它?假设我知道 PyObject_HEAD 的长度?

B) 或者非 hacky 修改 uvloop 以暴露循环指针。我在这里完全一无所知,因为我从未看过 cython 代码。我可以在循环上创建一个 python 函数,从我的 C 代码中调用它并获取 C 指针吗?喜欢:

通过将 getLoop 添加到此处:

https://github.com/MagicStack/uvloop/blob/master/uvloop/loop.pyx

0 投票
1 回答
5830 浏览

python - 与 uvloop 等效的异步事件循环

我有一个使用协程方法的事件循环asyncio

我热衷于使用uvloop寻找以下示例的等效项。

这是一个简单的asyncio事件循环示例:


问题:


[注意]:

  • uvloop声称这使 asyncio 速度提高了 2-4 倍。
0 投票
1 回答
533 浏览

python - 同步代码的异步性能

我创建了以下测试来检查在异步函数中运行同步代码的性能。

Inreturn_random函数可以是诸如写入日志、转储或加载 json、验证进出日期、调用其他函数……等。

count_sync 和 count_async 变量用于跳过打开和关闭事件循环的开销。只需计算函数内部的时间。

这部分代码只是调用同步函数计数次数。

相同的代码,但现在return_random是异步函数:

使用不同数量的调用函数和运行时间计数运行代码后,得到以下结果:

所有时间都以同步功能运行,速度快 2 倍以上。

这是否意味着在没有异步功能的情况下更好地运行同步代码?最好不要使用很多异步函数?

0 投票
0 回答
302 浏览

python - 有没有办法在 asyncio 构建的预分叉多进程 TCP 服务器上进行负载平衡?

感谢上一个答案中的人,现在我可以构建一个多进程 TCP 服务器,每个进程分别运行一个异步服务器,但都绑定到一个端口。(使用 asyncio 时无法使用 os.fork() 将多个进程绑定到一个套接字服务器

理论上?当每个进程平等地处理传入消息时,此模型将达到其最佳性能。好处可能是更低的延迟或更高的 tps?我不确定。

这就是问题所在。我创建了一个四进程服务器,并统计了每个进程将接受多少个 tcp 请求(由不断发出新连接请求的循环客户端)。结果就像 {p1:20000 次,p2:16000 次,p3:13000次,p4:10000 次} <-- 这个。可能不是什么好结果。

我正在弄清楚锁是否会有所帮助(让获得锁的进程接受请求,而不是让进程直接竞争性地接受请求)。但事实证明,只有父进程才能获得锁,而另一个根本做不到。

试图找出解决方案,需要你的帮助。


这是一个简单的示例服务器代码(预分叉模型,其中处理竞争性地直接接受请求):

然后我们可以将其输出重定向到这样的文件中:

下一步也许我们粗略地处理这些数据:

得到这样的输出(其中 key 表示端口号,而 value 表示他们处理了多少回声):

不平等。


当我像这样引入多处理锁时,事情变得更糟了:

↑ 那么唯一能接受请求的进程就是父进程。而子进程被完全阻止。好像如果你在进程被阻塞之前获得了锁,那么它总是会这样。口译员只是忠实地按照我们的指示去做。


总之,这是我的两个问题:

  • 1\如果有什么方法可以让这个预先分叉的异步服务器负载平衡?
  • 2\有没有什么办法可以引入锁来帮助解决这个问题?

谢谢!

PS:如果有人能告诉我如何在pypy的解释器中使用uvloop驱动eventloop?非常感谢!

0 投票
1 回答
77 浏览

python-3.x - 正确响应来自另一个上下文的等待条件

如果正在使用 uvloop 或 asyncio,我试图探索的功能之一是如果我执行一些操作然后“等待某个条件”。

让我们看下面的例子:

然后其他一些过程会做一些工作。

那么这个进程的协程有:

现在我知道我可以使用条件变量之类的东西,但那些需要某种锁。我不关心多个人访问该协程,所以我不想“锁定”任何东西。我只是想用这个其他协程(zmq 协程)中的一些数据来通知()该上下文以返回到某个元素。

这里的关键是提取协程上下文(一些 id),然后通知 await 命令并传入这个 rval 项。

关于如何在没有锁的情况下有效地做到这一点的任何想法?

0 投票
1 回答
116 浏览

python-3.x - python加速一个简单的函数

我试图找到一种简单的方法来“加速”一个大脚本的简单功能,所以我搜索了它并找到了 3 种方法来做到这一点。但似乎他们需要的时间总是一样的。那么我做错了什么测试它们?

文件1:

文件2:

文件3:

每个文件大约需要 180-200 秒

所以我“看不出”有什么不同。