最近对GAE感兴趣。GAE是免费的(当然也有升级收费的),默认可以建立10个免费的web应用(不过我的账号可以建立25个免费应用^__^),至于配置,如果只是做简单的应用足够应付了,例如做一个定时抓取数据的应用,又或者用goagent搭建梯子。虽然GAE这么好的产品无法在国内(appspot.com在国内是无法访问的),但利用免费的资源做一些简单的事情还是很有意义的,对于如定时抓取数据,针对海外用户数据分析等等就非常有用了。
今天就写一篇关于GAE定时器的文章。做这个定时器的前提是,假设你已经搭建好了GAE的开发环境,使用Java语言版本。
GAE关于定时任务的开发文档说的比较清楚,定时方式设置也比较多样。但最高频率只能到1分钟。如果做一个秒级别的定时器就没法完成,例如每个10秒执行一次,那就不能用scheduled tasks。这是可以使用scheduled tasks与task queue结合。当然也有另外的方式,使用Background threads(后台线程),通过while(true)+sleep(10000)的方式实现定时,但目前不探讨这种方式。
如果说scheduled tasks是用来定时执行任务的可以很好理解。task queue就是任务列队,就不大好理解。字面的理解就是等待执行的任务,默认是1秒可以执行5个任务。但是以什么方式执行呢?
我一开始以为,如果设置60