Skip to content

i5ting/cron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QBaseCron

运行

修改系统设置/app/config.js

  • PUSH_SERVER_URL 是推送的url,默认是本机的push服务

启动redis

一定要注意redis启动方式

nohup redis-server  --notify-keyspace-events Ex  --loglevel verbose >./redis-server.log 2>&1 &

启动web server

./start.sh

http使用3452端口

tech stack

  • express(API)
  • redis(任务调度)
  • mongodb(存储任务)

优化

cron triggered:use queue

原理

增加调度,等触发调度的时候,对外发送请求,这样就能够做到通用了

阶段1:根据时间,实现基础的延时调度

阶段2:引入crontab一样的表达式,支持更多调度

https://github.com/bunkat/later

此时的任务,会发给阶段1的基础延时调度来处理

阶段3:触发之后对外发送http请求,此处可以负载

总结

通过3个阶段的处理,可以完成大规模的部署

Table

  • _id
  • time
  • desc
  • callback_url
  • is_finished
  • create_at

情景

2014-11-11 11:10 财神给小墨发送消息

todo

  • 增加一个调度
  • 移除一个调度
  • 获取调度列表
  • 查看调度详情

url

token

http://42.62.8.172:3453/api/v0.1.0/push

定时推送

http://127.0.0.1:3452/api/v0.1.0/tasks

post

x-www-form-urlencoded

参数

  • time = 2014-10-17 20:43:44
  • desc = desc
  • callback_url = http://127.0.0.1:3453/api/v0.1.0/push/api
  • data = eyJ0b2tlbiI6IkIxNTA0RDk5RjBDMERCODA0ODcwOUVDNThCQUNENEExMDU0Q0IzMzFDNTc2MjdBMDQyRTcyQ0UxREZDNjg3M0YiLCJhbGVydCI6Iui

说明:

data是对象,转成string,然后base64获得的。具体算法如下:

		var d = { 	token:'B1504D99F0C0DB8048709EC58BACD4A1054CB331C57627A042E72CE1DFC6873F', 	alert:'这是我的消息,你妹啊1211221', 	payload:{     "status": {         "dfsdsf": 0,         "msg": "success"     } }, 	badge:'1' }
		//JSON.stringify(d) = {"token":"B1504D99F0C0DB8048709EC58BACD4A1054CB331C57627A042E72CE1DFC6873F","alert":"这是我的消息,你妹啊1211221","payload":{"status":{"dfsdsf":0,"msg":"success"}},"badge":"1"}

		var a = new Buffer(JSON.stringify(d)).toString('base64');
		// a= eyJ0b2tlbiI6IkIxNTA0RDk5RjBDMERCODA0ODcwOUVDNThCQUNENEExMDU0Q0IzMzFDNTc2MjdBMDQyRTcyQ0UxREZDNjg3M0YiLCJhbGVydCI6Iui/meaYr+aIkeeahOa2iOaBryzkvaDlprnllYoxMjExMjIxIiwicGF5bG9hZCI6eyJzdGF0dXMiOnsiZGZzZHNmIjowLCJtc2ciOiJzdWNjZXNzIn19LCJiYWRnZSI6IjEifQ==

test with curl

curl -d "time=2014-10-25 16:32:59&desc=sfsfd&callback_url=http://127.0.0.1:3453/api/v0.1.0/push/api&data=eyJ0b2tlbiI6IkIxNTA0RDk5RjBDMERCODA0ODcwOUVDNThCQUNENEExMDU0Q0IzMzFDNTc2MjdBMDQyRTcyQ0UxREZDNjg3M0YiLCJhbGVydCI6Iui" 

实时推送

http://127.0.0.1:3453/api/v0.1.0/push

x-www-form-urlencoded

参数

  • token = B1504D99F0C0DB8048709EC58BACD4A1054CB331C57627A042E72CE1DFC6873F
  • alert = 这是我的消息,你妹啊1211221
  • payload = { "status": { "dfsdsf": 0, "msg": "success" } }
  • badge = 0

Releases

No releases published

Packages

No packages published