问题标签 [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.
python - 将 Bjoern 扩展到多台服务器
我正在构建一个使用 Bjoern 作为 WSGI 服务器的高性能 Web 框架。
我现在想知道,如果您需要处理 200.000 个请求/秒,您将如何将 Bjoern 扩展/扩展到多个服务器,或者更确切地说是通常所说的负载平衡?您首选的方法是什么?
Bjoern 中是否有一些帮助程序/内置函数来帮助执行此操作?或者我应该在 Python 中使用单独的负载均衡器?
例如,让我们以下面的简单 WSGI 服务器为例:
要将其扩展到多个处理器,需要按以下方式进行修改:
但是,如果我想将其扩展到多台服务器(从而也使用它们的资源)怎么办?
使用 Nginx、Lighttp 或 Monkey-http 等其他 Web 服务器似乎有点过头了,尤其是在项目的理念是保持一切紧凑且没有不必要的绒毛的情况下。
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 上。这会大大影响请求/秒吗?
python - Bjoern WSGI 服务器 unix 套接字权限
有没有办法强制UID
/在WSGI 服务器permissions
创建的 unix 套接字上?Bjoern
默认情况下,它创建具有以下权限的套接字:
我需要将其更改为:
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
docker - 在 docker-compose.yml 中将 gunicorn 更改为 bjoern
我有一项服务,我通过 docker-compose 运行 gunicorn。gunicorn 开始的部分是 .yml 文件中的以下行:
我的想法是停止使用 gunicorn 并继续使用 bjoern。有人可以帮助我修改我应该修改的内容吗?
非常感谢您的关注。
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
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 和图像并将图像转换为可用格式 ->
我收到的错误是无声的,它只返回“无”->
任何见解将不胜感激!我是新手,所以希望这是一个正确的问题。