首页 > 技术文章 > tornado定时任务

wolfstark 2022-02-25 17:38 原文

方法一、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

 

推荐阅读