问题标签 [bjoern]

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 投票
0 回答
2186 浏览

python - 将 Bjoern 扩展到多台服务器

我正在构建一个使用 Bjoern 作为 WSGI 服务器的高性能 Web 框架。

我现在想知道,如果您需要处理 200.000 个请求/秒,您将如何将 Bjoern 扩展/扩展到多个服务器,或者更确切地说是通常所说的负载平衡?您首选的方法是什么?

Bjoern 中是否有一些帮助程序/内置函数来帮助执行此操作?或者我应该在 Python 中使用单独的负载均衡器?

例如,让我们以下面的简单 WSGI 服务器为例:

要将其扩展到多个处理器,需要按以下方式进行修改:

但是,如果我想将其扩展到多台服务器(从而也使用它们的资源)怎么办?

使用 Nginx、Lighttp 或 Monkey-http 等其他 Web 服务器似乎有点过头了,尤其是在项目的理念是保持一切紧凑且没有不必要的绒毛的情况下。

0 投票
1 回答
3034 浏览

python - Python 应用服务器(Bjoern 与 Gunicorn)

我正在对 python WSGI 应用程序服务器进行基准测试。

我正在运行 bjoern,如下所示:

和 Gunicorn 一样:

但是,我观察到 Bjoern 处理的请求数量是 Gunicorn 的一半。我进行基准测试的节点有 2 个 vCPU。

根据迄今为止发表的许多文章(例如) https://dzone.com/articles/a-performance-analysis-of-python-wsgi-servers-part Bjoern 应该在每秒处理许多请求方面做得更好与Gunicorn相比。

按照此操作使 Bjoren 能够在多个内核上运行https://github.com/jonashaag/bjoern/blob/master/tests/fork.py

然而,Bjoern 仍然只处理 Gunicorn 处理的请求的一半多一点

Bjoren 似乎正在使用多个内核:

任何想法如何调试这个?

[更新] 我在不支持 SO_REUSEPORT 的 3.2.0-115-virtual 上。这会大大影响请求/秒吗?

0 投票
1 回答
10852 浏览

python - Bjoern v/s Gunicorn POST 请求

Bjoern不应该比Gunicorn更快吗?

简单应用程序.py

app_server.py

将 Bjoern 服务器运行为:

将 Gunicorn 运行为:

主要数据:

Gunicorn:请求 7.53 毫秒最高 10 秒平均值

Bjoern:请求 100 万 24秒最高 10 秒均值

独角兽:: Gunicorn 请求持续时间

独角兽统计

比约恩::

比约恩请求持续时间

比约恩数据

节点的配置都是ec2实例:(使用一个核心运行app_server,另一个运行tsung)

Ubuntu 12.04.5 LTS (GNU/Linux 3.2.0-115-virtual x86_64)

vCPU 数量:2

0 投票
1 回答
681 浏览

python - Bjoern WSGI 服务器 unix 套接字权限

有没有办法强制UID/在WSGI 服务器permissions创建的 unix 套接字上?Bjoern

默认情况下,它创建具有以下权限的套接字:

我需要将其更改为:

0 投票
0 回答
195 浏览

python - python 3 bjoern 错误编译器,带有 msvc 标志 cl.exe 失败,退出状态为 2

我无法为 python 版本 3 编译 bjoern 这些是我正在使用的版本

windows 10 python 3.4 bjoern-py3 -> [ https://github.com/isaiah/bjoern-py3][1][1] : https://github.com/isaiah/bjoern-py3 Visual c++ -> Visual C++对于 Python-9.0

这是控制台输出

python 2.7 命令-> python setup.py build --compiler=msvc

蟒蛇3.4

命令-> python setup.py build --compiler=msvc

0 投票
1 回答
263 浏览

docker - 在 docker-compose.yml 中将 gunicorn 更改为 bjoern

我有一项服务,我通过 docker-compose 运行 gunicorn。gunicorn 开始的部分是 .yml 文件中的以下行:

我的想法是停止使用 gunicorn 并继续使用 bjoern。有人可以帮助我修改我应该修改的内容吗?

非常感谢您的关注。

0 投票
0 回答
473 浏览

python-3.x - 设置 Nginx 超时和默认 JSON 响应

我有一个简单的 Falcon REST API 用于接受 JSON 格式正文的 POST 请求: { "Input": "input string request" } 并返回: { "Output: "output string response" }

需要注意的是,在生产环境中,所有请求都来自单个客户端,并且该服务应该能够处理 50 个请求/秒,平均响应时间低于 200 毫秒。理想情况下,这些请求应该分批完成,但不幸的是,由于几个因素,它必须以这种方式完成。

我发现 Bjoern(与 Gunicorn 相比)能够以最快的速度为我的应用程序提供服务,并在导致超时之前处理最多的负载。最重要的是运行 Nginx,我的默认配置粘贴在下面。

我面临的问题是我看到大约 2% 的请求超时(由 Linuxwrk命令行工具确定),我认为这是由于负载。

我想知道是否可以将 Nginx 配置为设置响应客户端的时间限制(假设为 500 毫秒),如果上游服务器在响应之前达到该时间限制,则发送带有空 JSON 响应的默认 JSON 响应:{ "Output": "" }

是否可以让所有请求在指定的最长时间内返回?

在此先感谢您的时间!:)

/etc/nginx/nginx.conf:

/etc/nginx/conf.d/app.conf

0 投票
1 回答
67 浏览

python - cv2 imdecode、imencode 和使用多部分编码器通过 http 传输图像

我很困惑,也许我误解了一些东西,所以我会发布并看看有什么见解回来。

我有一个使用 JWT 进行身份验证的 Flask API 应用程序(bjoern WSGI)。我向烧瓶应用程序发送一些凭据和本地 URL,以访问将提供图像的 API。然后,flask 应用程序在图像上运行一些 ML,并回复检测数据。一旦客户端收到来自烧瓶应用程序的响应,它也会从 API 请求匹配的图像(双击)。

我想要做的是将flask应用程序中的匹配图像连同JSON格式的检测数据一起传递回客户端。我通过使用 requests-toolbox 和 MultiPartEncoder 实现了所有这些。我的问题是当我尝试使用 cv2.imdecode 将 response.content 字节编码为客户端的 jpeg 时。这是相关代码,我还将发布输出和错误。我不想将图像写入磁盘并将其读回 numpy 数组,我试图在内存中完成所有操作。

这是在客户端,这部分是将请求发送到烧瓶应用程序的地方。

这是烧瓶应用程序中的一些代码,用于处理从 API 抓取图像并将其编码以传递到 ML 模型管道。此代码按预期工作。

所以现在有一个包含img的变量被cv2.imdecode解码成jpg。然后可以将此图像格式 (numpy.ndarray) 传递给 opencv DNN 模块或传递给 pycoral 模型以进行 TPU 推理。这是我要发回给客户的图像。这是我用来完成此操作的代码。

现在在客户端分离 JSON 和图像并将图像转换为可用格式 ->

我收到的错误是无声的,它只返回“无”->

任何见解将不胜感激!我是新手,所以希望这是一个正确的问题。