0 0

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

描述:有大量不同类型的任务,每个任务被设定为在某一时刻开始执行,每秒执行的任务可达到200个,但任务本身是比较简单的数据库操作
初步方案:在数据库中设计队列列表,将任务序列化后保存进队列,并加上时间戳.一个进程每秒访问一次数据库,提取当前时间执行的任务并反序列化执行

但感觉在这个并发下面效率不佳,寻求更好方案与相关技术

要在最低开销的情况下保证应用的健壮性

问题补充:
我分析过backgroundrb,发现我的需求其实没那么复杂,并不需要很多的worker这样的多线程异步处理,一个按时间排序的任务队列即可,决定用drb自己实现了,先看看保存在数据库里性能好不好
问题补充:
哦,你那PPT我Shanghai On Rails上听过你的presentation了,谢了两位
2008年6月23日 12:17

2个答案 按时间排序 按投票排序

0 0

采纳的答案

如果定时任务不是程序动态创建出来的话,那么直接用Linux的cron就可以了,访问数据库的那些操作用SQL直接写好,放在shell脚本里面,然后在cron里面配置定期执行就OK了。

如果定时任务是程序动态创建出来的话,那么你可能需要自己写一个后台任务处理的机制,比方说后面跑一个drb server,前台创建任务就丢给drb去异步执行。现在ruby的这种异步消息处理服务器还挺多的,什么starling之类的。

2008年6月23日 18:16
0 0

是的,robbin 已经解释的很详细了。我们项目中也重来不用那个什么backgroundrb,简单的数据库维护,更新等等操作都是通过cron跑的。如果有跟ruby代码本身打交道的,用messing来处理。之前我做了一个很简单的messing ppt:http://mmm.iteye.com/blog/187469

2008年6月24日 08:31

相关推荐

    Rails3 使用rake启动后台任务

    在 Rails3 中,rake 不仅用于基本的项目管理,还可以用于启动后台任务,这在处理耗时操作、异步任务或者批量数据处理时非常有用。后台任务可以避免阻塞用户界面,提高应用程序的响应速度。以下是一些关于如何在 ...

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    Ruby on Rails中文指南

    7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...

    Ruby On Rails中文教材(PDF)

    4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...

    RailsGuides中那个blog程序源码

    在Rails中,**模型(Model)** 负责处理数据和业务逻辑,通常与数据库交互。在这个"blog"程序中,可能会有一个`Post`模型来代表博客文章,包含了如标题、内容、作者等属性,并提供相关的操作,如创建、更新、删除...

    shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现.zip

    shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现 这是一个 Rails 应用程序,它使用 Shoppe 构建。 它具有一个可以爱的设计,以充分演示Shoppe平台提供的功能以及它在 Rails 应用程序中的。 正在启动要开始...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    在Rails中使用SSL

    标题“在Rails中使用SSL”涉及的是如何在Ruby on Rails框架下配置并使用安全套接层(SSL)来实现网站的加密通信。Rails是用Ruby编程语言开发的一个流行的Web应用程序框架,它支持HTTPS协议,通过SSL/TLS证书来提供...

    bower-rails, 在 Rails 上,为 Bower 设置类似 DSL + rake任务.zip

    bower-rails, 在 Rails 上,为 Bower 设置类似 DSL + rake任务 rails Bower 对 Rails 项目的支持。 依赖文件是 Rails root 目录中的bower.json,如果使用 DSL,则为 Bowerfile 。 查看最新变更和发布的变更日志文件...

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    rails中使用javascript日期控件

    这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更高效、友好的前端交互。 首先,我们需要了解JavaScript日期控件的基本概念。JavaScript是一种在客户端...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    Ruby-getschwifty利用ActiveJobActionCable在后台作业队列中渲染部分Rails视图

    在Rails应用中,ActiveJob是处理后台任务的抽象层,而ActionCable则是实现Websocket通信的库,允许实时的双向通信,即服务器推送更新到客户端。 ActiveJob是Rails 4.2引入的一个特性,它提供了一种统一的接口来创建...

    Struts2和Rails的国际化实现

    以下是如何在Rails中实现国际化: 1. **创建翻译文件**:在`config/locales`目录下,为每种语言创建一个对应的YAML文件,例如`en.yml`(英语)和`zh-CN.yml`(简体中文)。 2. **定义翻译键值对**:在这些YAML文件...

    Rails的中文乱码问题

    在Rails中,可以在`config/application.rb`或`config/environments/development.rb`中设置`config.encoding = "utf-8"`。 4. **数据库连接**:确认数据库连接器(如ActiveRecord)的连接参数中包含正确的字符集配置...

    rails-assets, 在 Rails 中,资产管理的解决.zip

    rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r

Global site tag (gtag.js) - Google Analytics