Rails Rails 异步队列任务

wl1991724 · 2015年05月29日 · 最后由 fage108 回复于 2017年07月21日 · 4815 次阅读

我之前用 java 开发了一个发送验证码的模块,采用的异步任务,发送验证码时,开启另一个线程异步处理,在 rails 中怎么实现呢?

验证码是放在 redis 中的,rails 是怎么操作 redis 的呢?请大神赐教,rails 刚学不久

@kikyous 谢谢,我去学习一下

@kikyous rails4 是不是自带了一个作业队列啊,能用么

#4 楼 @wl1991724 rails 的 activejob 只提供了一个统一的封装来调用像 sidekiq 这类东西

@kikyous 好的,谢谢。我去看了 sidekiq 发现挺复杂了,您有收藏的教程么,或者有其他轻量的推荐吗,我就实现异步发短信验证码这一个简单的功能。

自己就是开一个线程去做。

@kikyous 我现在出现了这个错误 Asset filtered out and will not be served: add Rails.application.config.assets.precompile += %w( bus_account.js ) to config/initializers/assets.rb and restart your server 这是什么引起的呢,每个 js css 都要加到 assets.rb 里面吗

@kikyous 可是不加就一直报这个错。我加上之后,css 里面的图片路径又不对了……

jimrokliu 回复

sidekiq 是自己开好的另一个线程帮我们做异步队列的事情,还是需要我们手动开一个线程去做?然后把队列放在新开的线程下面跑,该怎么实现呢?

fage108 回复

Sidekiq 有自己的线程池,如果占满了,队列里的任务就会等待。如果你像自己控制,可以看看 ruby 的 concurrent 包。添加 gem 'concurrent-ruby'。github 的项目里有介绍,可以找到 thread pool 的使用方法。

jimrokliu 回复

非常感谢,我已解决我的问题😄

需要 登录 后方可回复, 如果你还没有账号请 注册新账号