问题标签 [sanic]

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

python - 在 Sanic 路由参数中指定布尔值

在 Sanic 中,可以在传入 URL 的路由参数中指定各种原始类型,例如<param:int>or <param:number>,以便接收请求参数的函数可以自动正确解析类型。

但是,<param:bool>不起作用。Sanic 不支持布尔值,还是我使用了不正确的关键字?

我的错误信息:

我的代码:

我还尝试了其他拼写,例如 Boolean 和 BooleanType 无济于事。Sanic 的版本是 0.7.0,在 virtualenv 中使用 Python 3.6.5。

0 投票
3 回答
2219 浏览

python - RedisClusterException:使用连接池时redis中的连接太多

我正在使用 aredis 来处理连接池。以下是我如何在 main 函数中实例化 redis 连接 -

以下是协程定义 -

我正在使用 sanic 来运行 Web 服务器。这就是我实例化的方式 -

我的实现在某种程度上是错误的吗?我不知道redis如何重用这些连接?

0 投票
1 回答
1373 浏览

python-3.x - 等待 db future 完成?

我已经为 sanic 应用程序编写了代码,rethinkdb 被用作后端数据库。我想等待 rethinkdb 连接函数在其他函数之前初始化,因为它们依赖于 rethinkdb 连接。

我的 rethinkdb 连接初始化函数是:

未来解决后将执行的回调函数是

sanic 应用程序:

当我启动这个应用程序时,open_connections 函数中的打印语句在最后执行。

0 投票
2 回答
2343 浏览

python - aiohhttp 中的会话重用

我尝试重用 HTTP-session 作为 aiohttp 文档建议

不要为每个请求创建会话。您很可能需要每个应用程序一个会话来完全执行所有请求。

但是我与 requests lib 一起使用的通常模式不起作用:

然后我尝试

我有错误

async_timeout 的任何解决方法都没有帮助。

另一种方法是工作:

但这似乎是为每个请求创建会话。
所以我的问题是:如何正确重用 aiohttp-session?

UPD:最小的工作示例。具有以下视图的 Sanic 应用程序

0 投票
1 回答
477 浏览

python - 我应该为 aiohttp 和 sanic 等异步框架使用单独的 WSGI 服务器吗?

我有使用 Flask 和 Falcon 的经验,对于在 prod 中运行站点,我使用了单独的 http-servers,例如 uwsgi\unicorn。但是我需要它来现代 Sanic 吗?根据文档,它可以很好地服务器自己的文件。

0 投票
1 回答
607 浏览

python - 安装 allennlp==0.3.0 时应该使用哪个版本的 sanic-cors、sanic 和 sanic-plugins-framework?

与 Python 3.6 或 3.7 一起安装时,我应该使用哪些版本的 python 包sanic-corssanic和?sanic-plugins-frameworkallennlp==0.3.0

当我运行时:

我收到错误消息:

后来阻止我的程序依赖 allennlp 运行(RuntimeError: You cannot use Sanic-CORS with sanic < v0.7.0):

0 投票
2 回答
1269 浏览

python - 将 HTTP 上传的数据返回到 sanic 服务器

我正在尝试将数据上传到sanicWeb 服务器。为此,我使用 curl 发出 POST 请求。我尝试在 POST 请求后返回一些数据。这背后的基本原理是返回一些现在代表服务器端上传的 ID。但这似乎不起作用。现在我想知道:我的程序错了吗?不curl写输出?或者这是一个错误sanic?有人可以在这里帮助我吗?谢谢!

这是 Python 程序:

您可以像这样调用curl

这是curl写入 STDOUT 的内容:

如您所见,text/plain生成了响应。这应该是application/json我的数据,不是吗?

0 投票
0 回答
259 浏览

macos - pip install sanic:命令 'gcc' 被信号 11 终止

所以我试图在我的 mac os yosemite 上安装 sanic,但由于某种原因,每次我尝试安装它时,它都会返回这个错误。

当我尝试为flask websocket安装vibora(另一个异步Web框架)或eventlet时也会发生这种情况

0 投票
1 回答
314 浏览

python - 如何将 Sanic 流对象插入 jinja 异步模板

在 Sanic(python 异步 Web 框架)中,我可以使用以下命令创建流对象输出到 html:

结果:

富吧

使用 Jinja2,我可以在打开异步功能后像这样异步渲染:

我尝试用这个将流对象输出到 Jinja2 模板:

但我得到的只是下载的模板(html 文件)。

我有什么办法可以让 Jinja2template.render_async接受 Sanicresponse.write并在流中返回它?

0 投票
0 回答
606 浏览

python-3.x - 从 Sanic 中的异步路由调用同步代码的首选方法是什么?

我正在研究 Sanic,因为我们正在寻找基于烧瓶的休息服务的替代品。我对 sanic 的异步特性很感兴趣,但我知道我们会遇到很多根本不支持异步的代码(例如,我们在 DynamoDB 之上使用了大量的 boto3 和一些 ORM,没有其中支持等待)。

所以:我需要找到能够在像 Sanic 这样的异步框架中运行同步代码的最简洁的方法。在 python 3.7 中有一个我觉得很有趣的 asyncio.create_task 调用。

想知道这是否是一种可能的方式:

主要.py:

app_logic.py:

这似乎可行,并且返回的任务对象是常规requests响应。

但是,我不知道这是否“安全”——例如,我不确定如何调查事件循环并验证它没有以任何方式阻塞。我确信这种方法完全愚蠢还有其他原因,所以把它们放在我身上:-)