我有一个应用程序,有1个网络dyno,7个后台队列,和1个时钟。我想使用HerokuStandard1x计划,因为它包含无限的后台工作人员(而且队列的数量将来可能会进一步增加)。当我部署我的应用程序时,procfile似乎没有提供我所期望的方式。显示了三个dynos,看起来我必须为每个工人/时钟购买一个额外的标准1xdyno。
Procfile:
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.pyHeroku显示3个dynos:
如何构造Procfile以利用标准1xdyno中包含的后台工作人员?
发布于 2021-05-27 12:51:03
首先,我构造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是建立在一个过程每dyno模型,这意味着每个工人需要运行在自己的dyno。因此,您将为您使用的每个工人进程收取1 dyno的费用。换句话说,它不是“25美元/mon的无限工作进程”,而是“运行每个25美元/mon的无限工作进程”。
基本上,免费层最多可以有2个dynos,霍比最多可以有10个,生产层可以有任意多个。
https://stackoverflow.com/questions/67671338
复制相似问题