方法一、tornado+apscheduler定时任务
搞一个调度任务,定时从HIVE抽数,使用tornado写个服务实现类似的功能。使用自带的间隔回调函数在发送请求没办法达到异步的效果,但是也不想在外部设置cron热痱任务,最后的目的就是将这些柔到一个代码里面,所以才有了这篇文章,下面给出的是示例
使用apscheduler定时任务,可以使用interval任务+cron任务,interval定时更新cron配置信息,cron则实现作业计划。
from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler() def my_job(): print('hello world')
# 使用修饰器
@sched.scheduled_job('cron', id='my_job_id', second=10) def hello(): print("hello decorate")
# 轮循
sched.add_job(my_job, 'interval', seconds=5)
# 定时计划
sched.add_job(my_job, 'cron', second=5, minute=1, hour=12, day_of_week=2) sched.start()
在tarnado中用法
import tornado from apscheduler.schedulers.tornado import TornadoScheduler sched = TornadoScheduler() def my_job(): print(sched.get_jobs()) sched.add_job(my_job, 'interval', seconds=5, id="1") sched.start() tornado.ioloop.IOLoop.instance().start()
方法二、
from tornado import web, ioloop import datetime class MainHandler(web.RequestHandler): def get(self): self.write('Hello Tornado') def f2s(): print '2s ', datetime.datetime.now() def f5s(): print '5s ', datetime.datetime.now() if __name__ == '__main__': application = web.Application([ (r'/', MainHandler), ]) application.listen(8081) ioloop.PeriodicCallback(f2s, 2000).start() # start scheduler 每隔2s执行一次f2s ioloop.PeriodicCallback(f5s, 5000).start() # start scheduler ioloop.IOLoop.instance().start()
文章来源:
1、https://www.deeplearn.me/2383.html
2、http://www.itxm.cn/post/7211.html