【发布时间】:2018-12-19 06:05:46
【问题描述】:
我有一个 机器学习 应用程序,它使用 flask 来公开 api(对于生产来说这不是一个好主意,但即使我会使用 django 以后这个问题的想法不应该改变)。
主要问题是如何为我的应用提供多个请求。几个月前添加了celery 来解决这个问题。 celery 中产生的工人数量等于机器中存在的核心数量。对于极少数用户来说,这看起来不错,并且已经投入生产了一段时间。
当并发用户数增加时,很明显我们应该对其进行性能测试。事实证明:它能够为 30 GB 和 8 核 机器处理 20 个用户,无需身份验证且无需任何前端。这看起来不是一个好数字。
我不知道有这样的东西:应用程序服务器、Web 服务器、模型服务器。当谷歌搜索这个问题时:gunicorn 是一个很好的应用服务器 python 应用程序。
- 我应该使用
gunicorn或任何其他应用程序服务器以及celery以及为什么 - 如果我删除
celery并且只在应用程序中使用gunicorn可以实现并发。我在某处读过celery不适合 机器学习 应用程序。 -
gunicorn和celery的用途是什么。我们如何才能实现两者的最佳结合。
注意:主要目标是最大化并发性。在生产中服务时,将添加身份验证。一个前端应用程序可能会在生产中发挥作用。
【问题讨论】:
-
为什么在生产环境中使用 Flask 公开 API 不是一个好主意?
-
“Flask 的 内置服务器 不适合生产”(强调我的) - 不是“Flask 不适合生产”。那里有区别。整个页面的其余部分专门用于推荐的不同设置。
-
@Abhisek 所以使用不同的服务器和烧瓶...
标签: python concurrency celery gunicorn