2010-03-30 86 views
1

我在我的类上使用了Observer。当其中一个记录被创建/更新时,我需要不通过其他服务(通过URL调用)。为避免减慢班级速度,最好的办法是什么?会使用gem喜欢delayed_job会矫枉过正吗?Rails - 异步任务,分叉进程,最佳实践

在我观察的after_update()/ after_create()我只是想发起调用URL线程...

回答

2

如果您的通知是非线程阻塞,你可以简单地产生一个线程,并执行那里通知。这样,当该线程等待响应时,程序将继续运行。

当然,你需要一些方法来处理失败。您可以尝试三次,如果仍然失败,请向日志中写入通知或其他内容。

最好的(最可靠的)解决方案是使用作业队列。这样,如果一项工作彻底失败,您可以再次检查并重新提交工作。

2

绝对使用社区支持/接受的gem像delayed_job或resque。它的确不像你想象的那么难,你的应用程序将会更好地向下扩展。