繁体   English   中英

Heroku - 如何开始工作(延迟工作)?

[英]Heroku - how to start job worker (delayed job)?

我有一些使用delayed_job的miniapp。 在我的localhost上一切正常,但是当我将我的应用程序部署到Heroku并单击应该由delayed_job执行的链接时,没有任何反应,“任务”只是保存在表delayed_job

在这篇关于heroku博客的文章中写道,来自delayed_job表的任务被执行,当运行这个命令时rake jobs:work

但是我怎么能运行这个命令呢? 命令应该放在哪里? 在代码中,还是从终端控制台?

如果您正在运行Cedar堆栈,请从终端控制台运行以下命令:

heroku run rake jobs:work

如果您正在运行旧堆栈(Bamboo,Aspen等):

heroku rake jobs:work

请参阅: https//devcenter.heroku.com/articles/rake

根据delayed_job 文档 ,您还可以以编程方式启动worker:

#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment'

Delayed::Worker.new.start 

您应该使用Procfile来指定dynos的命令。 例如,你的Procfile中会有这样的东西:

APPDIR / Procfile

web:     bundle exec rails server -p $PORT 
worker:  bundle exec rake jobs:work

要在您的开发机器上使用它,您应该使用Foreman,这些都在文档中解释过。

https://devcenter.heroku.com/articles/procfile

在我们的例子中,我们每个月只运行一次延迟工作,因此不希望工作人员持续不断地运行。

为了解决这个问题,我们将作业排队(使用.delayed ),然后使用Heroku平台API生成rake jobs:workoff在一次性工作者中进行工作。 API调用返回相对较快。

PlatformAPI.connect_oauth(ENV["YOUR_HEROKU_KEY"]).dyno.create(ENV["YOUR_HEROKU_APP_NAME"],{command: 'rake jobs:workoff'})

暂无
暂无

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

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