问题标签 [quart]

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

python - 使用 Quart 的扩展 Quart-OpenAPI 进行 pytest 测试的完整示例在哪里?

我想将 pytest 与 Quart 的扩展 quart-openapi 一起使用,但文档示例和谷歌搜索没有帮助。

我在哪里可以找到与 quart-openapi 一起使用的 pytest 测试工具的具体示例?

到目前为止,我已经阅读了这些来源:

Quart 的测试博客教程

关于测试的 Quart 文档

关于类似工具的 Stack Overflow 问题

项目结构为:

app/__init__.py

api.py

test_endpoint.py

实际结果:ERROR at setup of test_app ... fixture 'app' not found

预期结果:我可以使用 pytest 使用 quart-openapi 进行测试。

0 投票
0 回答
820 浏览

python - 使用 Quart/Flask 上传多个文件会添加文件对象以形成字节,而不会添加到文件中

我有一个网页(网络应用程序),允许用户将文件上传到服务器。服务器端是 Python Quart(async Flask),在 Nginx 后面有 hypercorn 服务器。

问题,我无法上传多个文件。单个文件上传没有任何问题,一切都按预期工作。

我已经阅读了与此相关的所有堆栈溢出帖子,并且尝试了无数建议的解决方案。这种情况不同,当表单用单个文件提交时,文件对象包含在请求的“文件”部分中,但当提交多个文件时,请求的“文件”部分为空,文件-对象包含在具有正确键的“表单”中,其值是“字节”对象。

HTML 表单是:

通过 JS 将表单添加到页面客户端,并使用 Fetch 请求异步提交表单。请求头是:

请求有效载荷是:

在服务器上:

当提交单个文件时,在上传中找到“附加”键,并且“打印”显示正确的多字典对象。'attach' 键不在 form_data 中。当提交两个或更多文件时,上传的长度为 0,然后在 form_data 中找到“attach”键,并将字节对象作为值。

我确定这个问题是由“await request.files”引起的,但我不知道为什么或如何解决这个问题。

0 投票
1 回答
10639 浏览

python - 从异步函数调用同步函数

我正在尝试移植一个flask应用程序quart以使用asyncio. 我认为我目前的方法行不通,因为我的整个函数链都是在没有考虑异步的情况下编写的 - 请考虑以下几点:

如果long_running_task及其整个函数调用链未声明为async,我实际上是否从我的路由声明中获得任何好处async

0 投票
1 回答
279 浏览

python - 如何从 Flask(Quart)应用程序与 couchbase 服务器建立异步连接?

我正在尝试将 Flask 应用程序转换为 Quart 应用程序以添加异步模块并获得一些性能,如本文所述。为此,我使用 acouchbase.Bucket 对象连接到 Couchbase 存储桶。问题是夸脱速度较慢,并且在负载测试期间崩溃。这是我正在尝试的代码:

应用程序编译没有问题,但在负载测试期间它表现不佳并在一段时间后崩溃。一个非常相似的烧瓶应用程序(没有任何异步模块)比 quart 应用程序快,但您会期望带有异步模块的 quart 比烧瓶应用程序快:

Flask 等效项如下所示:

这是 quart 应用程序与烧瓶应用程序的比较。Flask 看起来比 Quart 应用程序快 10 倍,后者在测试后停止并出现此错误_96930 分段错误_。

夸脱:夸脱APP 烧瓶:烧瓶

任何答案/建议表示赞赏。

0 投票
0 回答
197 浏览

flask - 什么会导致 Flask-WTForms 为每个字段返回 None ?

当我在本地运行应用程序时,我有几种形式都按预期工作。

但是,当我尝试在通过 nginx 代理的同一个应用程序上使用任何表单时,每个表单都会None为每个字段返回。

如果我打印form.data它返回:

浏览器将表单数据/发布请求数据显示为:

nginx 配置的相关部分:

我知道这与我的 Quart 代码本身无关,因为它是在本地使用开发服务器时可以正常工作的相同代码(git 克隆)。

什么可能导致这种情况发生。

0 投票
1 回答
254 浏览

javascript - How to use javascript data in Quart/Flask/Jinja2 template tag?

I am using websockets within my Quart app in place of ajax. The aim is to be able to post a comment. A Quart websocket endpoint handles the backend side of things, and then I would like to append the comment to the page instantly from the data received from the websocket. This all working fine until I want to use either a template filter or utility context processor. I think some code will people to understand, so here is my websocket method in JavaScript/jQuery:

I have marked where the problem is in the code (it's at close to the bottom).

I receive an exception:

Which is expected at this point because within the jinja tag itthinks we are using python variables.

Is there a way to be able to do this?

0 投票
1 回答
99 浏览

python - python发出post文件请求

大家好,我正在开发一个 Python 3 quart asyncio 应用程序,并且正在尝试围绕我的 http API 设置一个测试框架。

Quart 具有构建 json、表单和原始请求的方法,但没有文件请求。我相信我需要自己构建请求包并发布“原始”请求。使用邮递员我可以看到请求需要如下所示:

如果存在一种方法,我不希望自己对此进行编码。

Python 中是否有一个模块,我可以在其中构建原始数据包数据并使用 Quart API 发送它?

我尝试过使用夸脱请求:

任何建议将不胜感激。

干杯。米奇。

0 投票
2 回答
279 浏览

python-3.x - 跟踪python中的悬空线程

我有一个基于 python 3.7.2 asyncio 的应用程序。有一个端点暴露了一些线程信息:

据我所知,除了主线程之外应该没有线程在运行,但是当我查询端点时,我看到了这个奇怪的 ThreadPoolExecutor。它从一个工人开始并不断增加:

在此处输入图像描述

任何想法为什么,如何以及这个 ThreadPoolExecutor 是什么?也许有一些方法可以查看它是在代码中的什么位置创建的,或者是哪个包创建的?

我用来运行我的应用程序的 Dockerfile:

我的需求文件:

0 投票
1 回答
64 浏览

python - 不覆盖处理程序的路由层次结构

我正在写一个烧瓶应用程序。拥有多个端点是有意义的,如下所示:

但是,如果我尝试在蓝图中声明它们,我会得到一个AssertionError: Handler is overwriting existing for endpoint _blueprintname_._firsthandlername_

有没有办法解决?我知道以前在 .net core 等技术中已经直接完成了。提前致谢。

0 投票
1 回答
729 浏览

websocket - Quart(异步 Flask)应用程序中的 Autobahn websocket 客户端

各位晚上好。我对这个地方并不陌生,但最终决定注册并寻求帮助。我使用 Quart 框架(异步 Flask)开发了一个 Web 应用程序。现在随着应用程序变得更大更复杂,我决定将不同的程序分离到不同的服务器实例,这主要是因为我想保持 Web 服务器的清洁、更抽象和无计算负载。
因此,我计划将一台 Web 服务器与几个(如果需要)相同的过程服务器一起使用。所有服务器都基于quart框架,现在只是为了简化开发。我决定使用 Crossbar.io 路由器和高速公路将所有服务器连接在一起。

问题就在这里发生了。我关注了这个帖子:

使用 autbahn.asyncio.wamp 以非阻塞方式运行多个 ApplicationSession

如何使用高速公路异步实现交互式 websocket 客户端?

我如何将交叉开关客户端(python3,asyncio)与 tkinter 集成

如何从协议外部发送 Autobahn/Twisted WAMP 消息?

似乎我尝试了所有可能的方法来在我的 quart 应用程序中实现高速公路 websocket 客户端。我不知道如何使它成为可能,所以两件事都可以正常工作,无论 Quart 应用程序是否有效,但高速公路 WS 客户端是否无效,反之亦然。

简化我的夸脱应用程序如下所示:

在这种情况下,应用程序卡在跑步者循环中并且整个应用程序无法工作(无法服务请求),只有当我通过 Ctrl-C 中断跑步者(高速公路)循环时才有可能。

启动后的CMD:

按 ctrl-C 后:

如何使 quart 应用程序与高速公路客户端以非阻塞方式一起工作成为可能?因此高速公路打开并保持与 Crossbar 路由器的 websocket 连接,并在后台静默监听。