如何以最低的开销在rails中实现定时任务

问题描述

描述:有大量不同类型的任务,每个任务被设定为在某一时刻开始执行,每秒执行的任务可达到200个,但任务本身是比较简单的数据库操作初步方案:在数据库中设计队列列表,将任务序列化后保存进队列,并加上时间戳.一个进程每秒访问一次数据库,提取当前时间执行的任务并反序列化执行但感觉在这个并发下面效率不佳,寻求更好方案与相关技术要在最低开销的情况下保证应用的健壮性问题补充:我分析过backgroundrb,发现我的需求其实没那么复杂,并不需要很多的worker这样的多线程异步处理,一个按时间排序的任务队列即可,决定用drb自己实现了,先看看保存在数据库里性能好不好问题补充:哦,你那PPT我Shanghai On Rails上听过你的presentation了,谢了两位

解决方案

如果定时任务不是程序动态创建出来的话,那么直接用Linux的cron就可以了,访问数据库的那些操作用SQL直接写好,放在shell脚本里面,然后在cron里面配置定期执行就OK了。如果定时任务是程序动态创建出来的话,那么你可能需要自己写一个后台任务处理的机制,比方说后面跑一个drb server,前台创建任务就丢给drb去异步执行。现在ruby的这种异步消息处理服务器还挺多的,什么starling之类的。
解决方案二:
是的,robbin 已经解释的很详细了。我们项目中也重来不用那个什么backgroundrb,简单的数据库维护,更新等等操作都是通过cron跑的。如果有跟ruby代码本身打交道的,用messing来处理。之前我做了一个很简单的messing ppt:http://mmm.iteye.com/blog/187469

时间: 2024-11-09 05:53:12

如何以最低的开销在rails中实现定时任务的相关文章

利用Rails中Rake管理MySQL数据库

作为一名优秀的程序员,除了编写大量的程序外,创建大量的数据库也是在所难免的.在过去的几年中,笔者曾经创建和管理了大量的MySQL数据库,在这个过程中曾使用各种工具来进行管理,以便使它的过程更简单,例如首选的图形化管理工具PHPMyAdmin,以及基于命令行的MySQL clent,它们都非常好用.但是,在笔者内心身处始终觉得,我们是一名程序员,而不是一名数据库管理员,总感觉编程和数据库管理之间有些跨越.为什么不用与编程相同的方式来管理数据库结构呢?自从开始使用Rails,终于找到了答案.通过Ra

ruby on rails中modal查询has_and_belong_to_many

问题描述 ruby on rails中modal查询has_and_belong_to_many [12/21/14, 8:39:29 AM] Zengwei Shao: 问你一个问题,两个modal的关系是has_and_belong_to_many,我使用一个modal.includes(:modal1).where(....)查询之后modal中的只有modal1_ids 我想查到modal中有modal1s 解决方案 用 modal.modal1s 就可以了

rails中weill_paginate的paginate方法中不能使用额外参数的解决办法

    我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中,我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制,举个例子:正常的情况我们想要每页显示10条记录可以这么写: Item.paginate(page:params[:page],per_page:10) 但是我们又想要降序排列记录呢?书上给出的例子如下: Item.paginate(page:params[:page],per_page:10,order:'created_at

ruby on rails 中render json 格式 对于其中包含中文怎么处置呢?

问题描述 ruby on rails 中render json 格式 对于其中包含中文怎么处置呢? 老是报xE7" from ASCII-8BIT to UTF-8 之类的错误 解决方案 Ruby on Rails中文处理Kindeditor for Ruby on Rails 中文文档No more attr_accessible in Ruby on Rails 4

Ruby on Rails中MVC结构的数据传递解析_ruby专题

如果读者已经开发过基于 Rails 的应用,但对其 MVC 间的数据传递还有诸多困惑,那么恭喜您,本文正是要总结梳理 Rails 数据传递的方法和技巧.Ruby on Rails 3(以下统称为 Rails 3)是当前的主要发布版本,本文所述及的内容和代码都基于此版本.Rails 3 简介 Ruby on Rails 是一个 Ruby 实现.采用 MVC 模式的开源 Web 应用开发框架,能够提供 Web 应用的全套解决方案.它的"习惯约定优于配置"的设计哲理,使得 Web 开发人员能

rails 中怎么设置图片的验证码?有没有插件?

问题描述 rails 中怎么设置图片的验证码?有没有插件?这个是怎么实现的呢? 解决方案 http://hideto.iteye.com/blog/199757讲的就是这个呢

Ruby和Ruby on Rails中解析JSON格式数据的实例教程_ruby专题

Ruby解析JSON Ruby解析Json例子: json = '["a", "B", "C"]' puts "Unsafe #{unsafe_json (json).inspect}" #输出Unsafe ["a", "B", "C"] Ruby解析Json把上面的json字符串解析成Array.这样的方法并不安全,比如: json = 'puts "Da

深入理解Ruby on Rails中的缓存机制_ruby专题

几个场景 首先,让我先来带您浏览几个 ChangingThePresent.org 中的页面吧.我将显示站点中几个需要缓存的地方.然后,再指出我们为其中每个地方所做出的选择以及为实现这些页面所使用的代码或策略.尤其会重点讨论如下内容:     全静态页面     几乎无变化的全动态的页面     动态页面片段     应用程序数据 先来看看静态页面.几乎每个站点都会有静态页面,如图 1 所示,其中还有我们的条款和条件.可以通过单击 register 然后再选择是否接受用户协议来浏览相应页面.对于

Ruby On Rails中如何避免N+1问题_ruby专题

N+1问题 N+1问题是数据库访问中最常见的一个性能问题,首先介绍一下什么是N+1问题: 举个例子,我们数据库中有两张表,一个是Customers,一个是Orders.Orders中含有一个外键customer_id,指向了Customers的主键id. 想要得到所有Customer以及其分别对应的Order,一种写法是 SELECT * FROM Customers; 对于每一个Customer: SELECT * FROM Orders WHERE Orders.customer_id =