2

据我在互联网上阅读 - 部署 Flask/Django 应用程序的最佳实践是将其放在诸如 nginx 之类的 Web 服务器后面,并将它们与诸如 gunicorn 或 uWSGI 之类的 pre-fork 服务器捆绑在一起。

这有很多原因,例如 ssl 终止、防止 HTTP 攻击 (nginx)、分叉到线程以实现并发、内存泄漏后重新启动应用程序或其他异常 (gunicron)。

我想使用pm2在sanic上部署一个内部 API 微服务,因为它不是面向客户的,而是只会从内部服务调用 SSH 终止和防止 HTTP 攻击是无关紧要的,并发性由 sanic 的 asyncio 性质和异常重启由 pm2 处理。

我还需要gunicorn和nginx吗?我不能按原样运行应用程序进程并让它直接与调用者对话吗?

4

2 回答 2

3

你绝对不需要在你的堆栈前面有 gunicorn。Sanic 可以在没有网络服务器的情况下正常运行,因为它有自己的内部服务器。

我仍然主张使用 nginx 来终止 TLS 并处理静态文件(即使 sanic 可以做到这两点),因为它很有效。

这是我在同一个问题上给出的另一个答案的链接:https ://community.sanicframework.org/t/gunicorn-uwsgi-vs-build-in-http-server/47/2?u=ahopkins

于 2019-02-28T06:19:14.683 回答
0

你不需要它。查看http://supervisord.org/以启动、重新启动、自动重新启动等您的服务。

也就是说,我将 gunicorn 和 supervisord 结合使用。

于 2019-05-19T14:11:08.363 回答