内部异步微服务是否需要 gunicorn?

Do I need gunicorn for internal async microservices?

据我在 Internet 上阅读的所有内容 - 部署 Flask/Django 应用程序的最佳做法是将其置于网络服务器(例如 nginx)的后面,并将它们与预分叉服务器(例如 gunicorn 或uWSGI.

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

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

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

你绝对不需要在你的堆栈前面放一个 gunicorn。 Sanic 可以 运行 前面没有网络服务器就可以,因为它有自己的内部服务器。

我仍然会提倡使用 nginx 来终止 TLS 和处理静态文件(即使 sanic 可以完成这两项工作),因为它在这方面很高效。

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

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

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