Sid*_*Sid 6 ruby-on-rails callback observer-pattern
Rails模型上的观察者和回调操作在同一个线程上并阻止请求,直到它们返回.
例如,如果我有一个Photo模型,并且我在after_create回调或观察者中排队调整大小的作业,那么在队列中输入一个条目之前,请求就不会完成(如果我使用Amazon SQS进行排队,这有时会很慢) ).
对于Rails控制器上的Callbacks也是如此.如果我必须运行缓存管理或存储分析等维护,则在回调结束之前请求不会完成.
是否有Rails方法在回调(模型或控制器)内运行代码或在不同的线程中运行观察者,以便请求不会停止?
当前,在请求/响应周期之外在后台运行代码的几种流行方法是delayed_job和resque
Delayed_job 使用数据库对后台处理作业进行排队,而 resque 使用 Redis。
我已经使用了这两种方法,并且它们都工作得很好,请阅读文档以了解哪种方法最适合您的情况。
这不会自动使您的观察者和回调在后台运行,但它使执行此操作变得非常容易,甚至更多。这种技术非常广泛,并且在 Rails 社区中经过了生产测试。
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |