首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在生产环境外部调用delayed_job_active_record (rake job:work)

如何在生产环境外部调用delayed_job_active_record (rake job:work)
EN

Stack Overflow用户
提问于 2012-10-11 00:23:46
回答 2查看 4.7K关注 0票数 1

我有一个延迟的工作,这是调用每当用户发布一首歌,这个工作发送一个活动帖子到用户的Facebook墙。下面是该作业的代码,并在控制器中调用它。

我使用的是Ryan Bates Facebook Open Graph Railscast中看到的'delayed_job_active_record' gem

user.rb

代码语言:javascript
复制
def self.post_song(user_id, song_url)
    user = User.find(user_id)
    user.facebook.put_connections("me", "virtual_piano:post", song: song_url)
  end

posts_controller.rb

代码语言:javascript
复制
(upon successful save)
        User.delay.post_song(current_user.id, post_url(@post))

此作业使用标准rake jobs:work在开发模式下运行。

我见过一些人使用延迟作业的RAILS_ENV=production script/delayed_job start,我如何在生产中调用此方法并使其在后台运行?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 00:39:17

delayed_job中的rake jobs:work类似于rails的rails s命令-它在执行该命令的控制台(shell)的主进程中运行。这意味着当包含它的控制台(Shell)停止运行(即您注销)时,它将停止运行。

您将希望运行RAILS_ENV=production script/delayed_job start -这将像rails s -n对rails所做的那样,以守护进程(后台进程)的形式启动delayed_job队列。

票数 7
EN

Stack Overflow用户

发布于 2012-10-11 00:39:41

该脚本执行以下操作:

代码语言:javascript
复制
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

这将在后台运行delayed_job。

如果要在前台运行,可以创建一个简单的脚本,该脚本将具有:

代码语言:javascript
复制
worker = Delayed::Worker.new({}) # or add options
worker.start
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12824037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档