neodoxy 2008-06-23 12:17
浏览 315
已采纳

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

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

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

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

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

  • 写回答

2条回答 默认 最新

  • robbin 2008-06-23 18:16
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)