繁体   English   中英

Heroku Procfile 与多个工人

[英]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 个测功机:

  • 1x web(启用,比例:1,标准 1x)
  • 1x 工人“bg4”(规模:0)
  • 1x 时钟(刻度:0)

我应该如何构建 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 定价页面上的措辞有点误导。

截至 2021 年 5 月的 Heroku 标准定价

支持团队能够澄清:

在这种情况下,“无限的后台工作人员”意味着您可以根据需要运行尽可能多的工作进程。 在较低层(免费和业余爱好),可以使用的工作进程数量是有限的。

然而,Heroku 是建立在每个测功机 1 个进程的 model 上,这意味着每个工人都需要在自己的测功机上运行。 因此,您需要为您使用的每个工作进程支付 1 dyno 的费用。 换一种说法,它不是“25 美元/周一的无限工作进程”,而是“以每个 25 美元/周一的价格运行无限的工作进程”。

基本上,免费层最多可以有 2 个测功机,爱好最多可以有 10 个,而生产层可以有任意数量的测功机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM