繁体   English   中英

在生产环境中使用 Sanic 的内置网络服务器

[英]Using Sanic's inbuilt webserver in Production

Django文档说明了他们的开发服务器:

不要在任何类似于生产环境的环境中使用此服务器。 它仅供开发时使用。 (我们的业务是制造 Web 框架,而不是 Web 服务器。)

Sanic 的部署文档并没有说我们不能在生产中使用它内置的服务器。 它指出:

使用以下三个选项之一部署 Sanic 非常简单:内置网络服务器、ASGI 网络服务器或 gunicorn。 将 Sanic 置于反向代理之后也很常见,例如 nginx。

对我来说,这意味着从 Apache 中解放出来。 这也意味着Nginx、Gunicorn、Daphne、Uvicorn、Hypercorn等都是可选的。

然而,我发现一些关于它在Sanic 中的内置服务器的负面评论: python web 服务器写得很快 另一方面,他们的 github 存储库似乎非常活跃。 他们是否解决了 Reddit 帖子中提到的问题?

我错过了什么吗?

问题 1 处理请求大小和超时设置,这些设置允许通过向服务器发送过多数据来进行 DoS 攻击。 管理员可以根据服务器硬件和正在运行的站点的要求调整这些设置。 话虽如此,默认值可能应该低于它们的值,以使对未配置服务器的此类攻击更加困难。

问题 2 声称流响应中没有背压处理。 当前版本确实具有流量控制,因此可以获得适当的背压控制,避免此类问题。 由于这在 Python 的 asyncio 协议设计中被严重忽视了,过去很多应用程序都存在这样的问题,大概在写博客的时候也包括 Sanic。

As it is now, the Sanic server can certainly run directly on Internet, and that is in fact much safer against DoS than running Django behind nginx or Apache, where any long-lasting POST request blocks an entire Django worker.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM