heroku 上的后台工作

问题描述 投票:0回答:1

我是 Heroku 的新手,我正在学习 Rails 应用程序的教程。

现在它所做的只是使用 sidekiq 处理一些后台作业。唯一的前端组件是 Sidekiq 仪表板。

Procfile 中表示启动 Web 服务器。但是,由于我需要做的就是安排一个工作人员以一定的时间间隔运行我的后台作业,这是否意味着我不能启动 Web 服务器,除非我想查看排队仪表板?只要我在 rake 任务中还有其他东西,我应该能够关闭网络服务器,对吗?

此外,我注意到当您将代码推送到 Heroku 时,它不会自动迁移数据库。如果我想确保数据库每次都是最新的,我是否也将其放入 Procfile 中?

ruby-on-rails ruby heroku heroku-postgres
1个回答
0
投票

您只运行 Sidekiq 而不是 Web 服务器是正确的,您可以像这样创建 procfile:

worker: bundle exec sidekiq -C config/sidekiq.yml

此 Procfile 命令将启动 Sidekiq 进程,但不会启动 Web 服务器。正如您提到的,此设置足以处理后台作业。

对于每次部署后 Heroku 上的数据库迁移,您确实可以使用 Procfile 中的发布阶段脚本来自动化此过程

release: bundle exec rake db:migrate

通过在 Procfile 中包含发布命令,Heroku 将在每次部署后自动运行 rake db:migrate,确保数据库架构是最新的。

所以这是你最终的 Procfile 看起来像这样

release: bundle exec rake db:migrate
worker: bundle exec sidekiq -C config/sidekiq.yml
© www.soinside.com 2019 - 2024. All rights reserved.