[英]Heroku Procfile with multiple workers
我有一个带有 1 个 web 测功机、7 个后台队列和 1 个时钟的应用程序。 我想使用 Heroku 标准 1x 计划,因为它包括无限的后台工作人员(并且队列的数量将来可能会进一步增加)。 当我部署我的应用程序时,procfile 似乎没有按照我预期的方式进行配置。 显示了三个测功机,看起来我必须为每个工人/时钟购买一个额外的标准 1x 测功机。
档案:
web: flask db upgrade; gunicorn webapp:app
worker: rq worker -u $REDIS_URL high default low
worker: rq worker -u $REDIS_URL r1
worker: rq worker -u $REDIS_URL r2
worker: rq worker -u $REDIS_URL bg1
worker: rq worker -u $REDIS_URL bg2
worker: rq worker -u $REDIS_URL bg3
worker: rq worker -u $REDIS_URL bg4
clock: python clock.py
Heroku 显示 3 个测功机:
我应该如何构建 Procfile 以利用 Standard 1x dyno 中包含的后台工作人员?
首先,我构建 procfile 的方式存在错误。 每个“工人”都应该以不同的方式命名。 我认为“工人”一词对于 Heroku 配置有一些特殊含义; 它没有。 所以 Procfile 应该看起来像这样:
web: flask db upgrade; gunicorn webapp:app
worker1: rq worker -u $REDIS_URL high default low
worker2: rq worker -u $REDIS_URL r1
worker3: rq worker -u $REDIS_URL r2
worker4: rq worker -u $REDIS_URL bg1
foo_worker5: rq worker -u $REDIS_URL bg2
more_worker6: rq worker -u $REDIS_URL bg3
another_worker7: rq worker -u $REDIS_URL bg4
clock: python clock.py
其次,我的实际问题的答案(感谢 Heroku 支持团队)是每个额外的工作进程都需要一个单独的 Dyno。 我觉得 Heroku 定价页面上的措辞有点误导。
支持团队能够澄清:
在这种情况下,“无限的后台工作人员”意味着您可以根据需要运行尽可能多的工作进程。 在较低层(免费和业余爱好),可以使用的工作进程数量是有限的。
然而,Heroku 是建立在每个测功机 1 个进程的 model 上,这意味着每个工人都需要在自己的测功机上运行。 因此,您需要为您使用的每个工作进程支付 1 dyno 的费用。 换一种说法,它不是“25 美元/周一的无限工作进程”,而是“以每个 25 美元/周一的价格运行无限的工作进程”。
基本上,免费层最多可以有 2 个测功机,爱好最多可以有 10 个,而生产层可以有任意数量的测功机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.