我希望社区可以为我澄清一些事情,并且其他人可以从中受益。
我的理解是 gunicorn 工作进程本质上是 Heroku web dynos 的虚拟复制品。换句话说,Gunicorn 的工作进程不应该与 Heroku 的工作进程(例如 Django Celery Tasks)混淆。
这是因为 Gunicorn 工作进程专注于处理 Web 请求(基本上是限制 Heroku Web Dyno 的性能),而 Heroku Worker Dynos 专注于远程 API 调用等长期运行的后台任务。
我有一个简单的 Django 应用程序,它充分利用了远程 API,我想优化资源平衡。我也在查询大多数请求的 PostgreSQL 数据库。
我知道这过于简单化了,但是我是否正确地考虑了事情?
一些相关信息:
https://devcenter.heroku.com/articles/process-model
https://devcenter.heroku.com/articles/background-jobs-queueing
https://devcenter.heroku.com/articles/django#running-a-worker
http://gunicorn.org/configure.html#workers
http://v3.mike.tig.as/blog/2012/02/13/deploying-django-on-heroku/
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/gunicorn/
对于那些研究这个主题的人来说,其他准相关的有用 SO 问题:
Nginx + Gunicorn + Django Stack 上的站点缓慢故障排除
将 Gunicorn 部署到 Heroku 中的 Django 性能下降