【问题标题】:Using Sanic's inbuilt webserver in Production在生产环境中使用 Sanic 的内置网络服务器
【发布时间】:2020-02-08 07:17:15
【问题描述】:

Django documentation 声明他们的开发服务器:

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

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

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

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

但是,我在Sanic: python web server that's written to die fast 中发现了一些关于其内置服务器的负面 cmets。另一方面,他们的 github 存储库似乎非常活跃。他们是否解决了 Reddit 帖子中提到的问题?

我错过了什么吗?

【问题讨论】:

    标签: python python-3.x deployment server sanic


    【解决方案1】:

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

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

    现在,Sanic 服务器当然可以直接在 Internet 上运行,这实际上比在 nginx 或 Apache 后面运行 Django 更安全,因为任何长时间的 POST 请求都会阻塞整个 Django 工作人员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多