每N小时执行一次任务

时间:2019-11-23 06:48:44

标签: flask

我正在使用YouTube的API提取视频列表,并使用视频ID更新数据库。如果我想每6个小时做一次,什么是最好的方法?

使用@app.before_request是理想的解决方案吗?

@app.before_request
def check():
    last_updated = Table.query.first().last_updated
    diff = datetime.utcnow() - last_updated
    if dif > ...:
        ...

此解决方案,但是将在每个请求中查询数据库。

1 个答案:

答案 0 :(得分:2)

before_request装饰器允许我们创建一个在每个请求之前运行的函数。但是部分是您应该每6个小时运行一次API或请求一次,因此,应该有一些服务每6个小时运行一次以选择该函数,并根据我们的情况做您需要做的一切,我们正在更新数据库中的Video ID。

因此,下面的示例演示了一个简单的时间表,该时间表是一个库,它每隔n分钟运行一次以选择函数,我们将其作为选项的一部分来提及。

基本上运行该文件时,它将每5分钟执行一次功能“ say_hello”。

import schedule
import urlparse

def get_video_id():
  url_data = urlparse.urlparse("https://www.youtube.com/watch?v=UF8uR6Z6KLc")
  query = urlparse.parse_qs(url_data.query)
  video = query["v"][0]
  print(video)

schedule.every(6).hours.do(get_video_id)