问题标签 [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 回答
926 浏览

python - Python 3.6 - Sanic Motorengine

我正在尝试设置新的SanicWeb 框架(承诺非常快)motorengine以实现 100% 异步。

到目前为止我的设置:

不幸的是我得到:

为什么会崩溃?

0 投票
3 回答
8266 浏览

python-asyncio - 如何重用 aiohttp ClientSession 池?

文档说要重用 ClientSession:

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

会话内部包含一个连接池,连接重用和保持活动(默认情况下都打开)可以提高整体性能。1

但是文档中似乎没有关于如何做到这一点的任何解释?有一个可能相关的示例,但它没有显示如何在其他地方重用池:http: //aiohttp.readthedocs.io/en/stable/client.html#keep-alive-connection-pooling-and-cookie-分享

这样的事情是正确的方法吗?

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 投票
2 回答
1992 浏览

python-asyncio - 如何在发送响应之前等待 5 秒(不阻塞)?

这似乎是可能的,因为app.Sanic.handle_request()有这个片段

这就是awaitablePython 的检查方式:

我知道用来async def创建一个可等待的函数,但我不知道如何创建一个可等待的HTTPResponse实例。如果可能的话,用一个简单的方法来查看一个可等待响应的示例真的很有帮助await asyncio.sleep(5)


尝试了 Mikhail 的解决方案,这是我观察到的:

  • raise500进入asyncio.sleep()
  • ret500不进asyncio.sleep()(bug)
  • raise500阻止其他raise500(错误)
  • raise500不阻塞ret500
  • 无法判断是否ret500会阻止其他ret500,因为它太快了(不睡觉)

完整代码(通过另存为 运行test.py,然后在 shell 中python test.py并转到http://127.0.0.1:8000/api/test):

0 投票
1 回答
837 浏览

python - 部署 Sanic Raw

Sanic似乎是 Python 的高性能 Web 框架(服务器)。根据使用其他框架(包括 Flask 和 Django)的经验,我知道出于安全原因,通常建议将 Python 服务器放在 Nginx 等另一台服务器(例如反向代理)后面。这如何转化为 Sanic 或运行 Sanic 的 gunicorn 服务器?有没有人有这方面的经验。我想知道将 Python 服务器暴露给 Web 是否安全。

0 投票
1 回答
623 浏览

python - sanic 事件循环和高速公路

我有一个用Sanic编写的项目

我的网站有一个实时操作部分

对于实时部分,我想使用带有 sanic loop的高速公路

我有自定义聊天协议

和聊天工厂:

我得到了健全的事件循环并将工厂设置为 ChatFactory

上面的代码失败:

问题

A:我可以在高速公路上使用 sanic 事件循环吗?

‌B:如果是,应该怎么做?

0 投票
2 回答
3871 浏览

python - 浏览器未在后续请求中发送 cookie

使用 cookie 进行用户识别的项目。

当用户到达时,它调用服务(在 localhost 中运行),服务发送带有响应头的 cookie 如下所示:

响应标头如下所示:

然后在特定的用户操作之后,应用程序正在发送以下 API 请求:

上述请求的请求标头如下所示:

我期待cookie(random_id_123_123)与第一个请求一起接收,因为响应标头将是第二个请求的请求标头。

该网站运行在:http ://local.com:8080 (它实际上在本地机器上运行,我的 vhost 配置指向 127.0.0.1 local.com)并且它由 python 提供服务SimpleHTTPServer

设置 cookie 的后端服务也在 localhost 的 8000 端口上运行。似乎我在实施过程中遗漏了一些东西。那是什么?

编辑:这是代码

0 投票
1 回答
677 浏览

aiohttp - 测试 Sanic 文件上传

在查看文档时,我看到了一个很好的示例,说明了如何测试一个 sanic 应用程序。

现在我正在尝试让测试框架接受上传到端点的照片。我的代码通过以下方式工作:

它给出了一个错误,提示我无法传递文件。测试框架不支持吗?

0 投票
0 回答
461 浏览

python - 同时使用sanic和telepot超时上下文管理器错误

我正在尝试创建一个与 Telegram 通信的网络应用程序。并尝试将SanicWeb 框架与Telepot. 两者都有asyncio基础。现在我遇到了一个非常奇怪的错误。

这是我的代码:

我得到的错误是:

Telepotinsideaiohttp用作依赖项和 HTTP 调用。如果我只使用aiohttp.web.

我不确定这个问题与哪个项目有关。redis此外,我以相同方法连接的所有其他依赖项(例如,数据库连接)都运行良好。

任何建议如何解决它?

0 投票
2 回答
3494 浏览

python - 多客户端流式 Websocket 端点 (Python)

最近我陷入了“加密狂热”,并开始在一些交易所编写自己的 API 包装器。

特别是 Binance 有一个流式 websocket 端点。

您可以在其中流式传输数据,但通过 websocket 端点。我想我会用 sanic 自己尝试一下。

这是我的 websocket 路线

现在我在 2 台不同的机器上有 2 个客户端连接到它

但是,只有一个客户端能够连接并接收来自服务器的发送数据。我假设由于while循环阻塞并阻止其他连接连接,因为它没有连接yield

我们如何在不阻塞其他连接的情况下使其流式传输到多个客户端?

我考虑增加更多的工人,这似乎可以解决问题,但我不明白那不是一个非常可扩展的解决方案。因为每个客户都是自己的工人,如果你有数千个甚至只有 10 个客户,那么每个客户 10 个工人 1 个。

那么币安是如何进行 websocket 流式传输的呢?或者地狱如何推特流端点工作?

它如何能够为多个并发客户端提供无限流?因为最终这就是我想要做的