`
litaocheng
  • 浏览: 337139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Erlang定时任务server (仿crontab语法)

阅读更多

好久不写blog了,看到yufeng老大那么活跃,我也“耐不住寂寞”啊。

前不久写一个小东西,其中涉及很多定时执行的任务,如数据清理,数据导入,定时计算等等。

涉及到这个东西,就想起了linux下的cron,多么贴身的服务啊。

但是在我的erlang代码里,却缺少这样一个东西。没有关系,自己动手!

 

首先是crontab.cfg配置文件,其语法与linux下的crontab一致,可以 man crontab 进行参考。

但是许要注意,我们使用Erlang Term的语法定义每条任务:

{{m, h, dom, mon, dow}, {M, F, A}}.

m, h, dom ,mon, dow,为integer,如果包含*,或者step信息,则许要使用 "" 双引号包围,使其为string。MFA,毫无疑问就是我们要定期执行的函数,其会在一个spawn的process中执行.

 

主要包含2个module,一个用来解析crontab.cfg,一个定期检测crontab.cfg,判断是否符合条件,如果符合则执行MFA函数。这个module还比较粗糙,采用list遍历,效率也不是很高。但是已经可以使用了 :)

 

你可以修改crontab.cfg,增添定时任务,cron server通过检测文件的last modified time来判断是否许要重新加载.

 

压缩包中,有一个run.sh,你可以运行:

./run.sh
 

启动cron server, 等待约1分钟,会执行crontab.cfg中的MFA,产生屏幕输出:

run the routine by cron server:1
hello

分享到:
评论
2 楼 TAODIZHIYING 2013-03-13  
刚好碰到定时的问题,请问如何在项目中应用?
1 楼 mryufeng 2009-09-24  
很实用的东西。

相关推荐

    适用于windows版本的 Erlang25.2.3 and RabbitMQ server 3.11.9下载

    1. 并发性:Erlang采用轻量级进程模型,使得创建和销毁进程非常高效,因此在处理并发任务时表现出色。 2. 故障恢复:Erlang的进程间通信机制允许进程在出现错误时优雅地关闭和重启,增强了系统的容错能力。 3. ...

    erlang tcp_server

    Erlang TCP服务器是用Erlang编程语言实现的一种网络通信服务,它允许程序通过TCP协议接收和发送数据。在Erlang中,构建TCP服务器通常涉及到以下关键知识点: 1. **Erlang OTP(Open Telecom Platform)**:Erlang ...

    Editplus 安装Erlang的语法包

    "Editplus 安装Erlang的语法包" 这个标题意味着我们要在EditPlus这款文本编辑器中安装Erlang语言的语法高亮显示支持。EditPlus是一款功能强大的文本编辑器,它支持多种编程语言,并允许用户自定义语言配置或安装扩展...

    erlang20.3+rabbitmq server.rar

    标题中的"erlang20.3+rabbitmq server.rar"表明这是一个包含Erlang OTP版本20.3和RabbitMQ服务器的压缩包,专为在Windows操作系统上部署RabbitMQ设计。Erlang是一种并发性极强的编程语言,主要用于构建高可用性和...

    erlang分布式 XMPP Server.ppt

    总的来说,Erlang分布式XMPP服务器利用其强大的分布式特性、丰富的扩展机制和成熟的开源社区,为构建高效、可扩展的即时通讯服务提供了坚实的基础,尤其在结合Web和移动设备的场景下,展现出巨大的潜力。

    erlang server

    在本场景中,"erlang server"指的是使用Erlang语言实现的服务器应用,特别是一个聊天室服务器,以及对应的客户端代码。 **Erlang的关键特性:** 1. **并发性**:Erlang的设计非常适合处理大量并发连接。它通过轻量...

    erlang server源码

    Erlang Server源码分析与详解 Erlang是一种面向并发的、函数式编程语言,以其在分布式系统、高可用性和容错性方面的优势而受到广泛关注。尤其在构建大规模聊天室服务器这样的实时通信系统中,Erlang的性能表现突出...

    rebbitMq的安装软件全集 erlang rebbitMq-server 都要下载下来

    rebbitMq的安装软件全集 erlang rebbitMq-server 都要下载下来 其中erlang分为上下两个部分 windows 版本版本号rabbitmq-server-3.6.12 otp_win64_17.5

    rabbitmq-server-3.8.3.exe和erlang22.2.exe 64位压缩文件

    "rabbitmq-server-3.8.3.exe"则是RabbitMQ服务器的安装程序,用户在安装Erlang之后,可以继续安装这个来部署RabbitMQ服务。 安装过程一般包括以下步骤: 1. 首先,下载并运行"otp_win64_22.2.exe",按照提示完成...

    Erlang-game-server开发实践.pdf

    Erlang游戏服务器开发实践 Erlang是一种功能强大且灵活的编程语言,特别适合开发高并发、实时交互的游戏服务器。在本文中,我们将介绍如何使用Erlang开发一个简单的游戏服务器,并讨论其优点和实现细节。 Why ...

    erlang21.2 和 rabbitmq_server-3.7.13

    Erlang 21.2 和 RabbitMQ Server 3.7.13 是两个重要的IT组件,它们在分布式系统和消息队列服务中扮演着关键角色。Erlang 是一种功能强大的编程语言,以其并发性、容错性和分布式计算的能力而闻名。RabbitMQ 则是基于...

    适用于windows版本的 Erlang24 and RabbitMQ server 3.8.16下载

    标题提到的“适用于Windows版本的Erlang24 and RabbitMQ server 3.8.16下载”,意味着这两个组件的最新稳定版本已适配Windows操作系统。Erlang otp_win64_24.0是针对64位Windows系统的Erlang OTP(开放电信平台)...

    vim-erlang-runtime, Vim的Erlang缩进和语法.zip

    vim-erlang-runtime, Vim的Erlang缩进和语法 用于Vim的Erlang缩进和语法这是 Vim ( 来自 Vim 7.4 ) 附带的Erlang缩进和语法。安装方法 1克隆这里存储库: $ mkdir -p ~/.vim/bundle $ cd ~/.vim/b

    erlang资源

    Erlang是一种面向并发的、函数式编程语言,由瑞典...这两本书结合阅读,将为初学者提供一个全面的Erlang学习路径,从基础语法到高级并发编程技巧,有助于深入理解Erlang语言及其在构建高并发、分布式系统中的强大能力。

    远古封神Server(erlang源码)+文档+mongodb数据库

    《远古封神Server:基于Erlang的服务器架构与MongoDB数据库集成解析》 本文将深入探讨"远古封神Server"项目,这是一个采用Erlang编程语言构建的游戏服务器,搭配MongoDB数据库来实现高效的数据存储和处理。Erlang以...

    erlang编程 Introducing Erlang

    Erlang的语法简洁,支持模式匹配、函数式编程、列表处理和递归等特性。它的动态类型系统和强大的类型推断让代码更加灵活。 Simon St. Laurent的《Introducing Erlang》这本书深入浅出地介绍了这些概念,是学习...

    erlang25.0 windows版本

    - **Elixir**:基于Erlang VM的现代编程语言,提供了更接近Ruby的语法,同时保留了Erlang的并发特性和稳定性。 总的来说,Erlang 25.0为Windows用户带来了一个更新的、优化的并发编程环境,无论是用于开发分布式...

    erlang-21.0.9-1.el7,rabbitmq-server-3.7.7-1.el7

    erlang-21.0.9-1.el7.centos.x86_64.rpm,rabbitmq-server-3.7.7-1.el7.noarch.rpm

    rabbitmq-server-3.8.9-1+erlang-23.1.1+socat-1.7.3.2

    RabbitMQ作为最流行的消息队列服务器之一,被广泛应用于各种应用场景,如微服务架构、任务调度等。在这个场景下,我们讨论的是在Linux CentOS7环境下安装RabbitMQ 3.8.9版本,以及它依赖的Erlang 23.1.1和socat 1.7....

Global site tag (gtag.js) - Google Analytics