使用apscheduler更新URL以运行函数

时间:2017-09-20 08:17:00

标签: python api flask

我正在尝试更新此网址,以便该字词可以更改(使用Oxford Dictionaries API)

url = 'https://od-api.oxforddictionaries.com:443/api/v1/entries/' + language + '/' + word_id().lower()

获取word_id我创建了这个函数来创建一个随机词

def choose_word():
    words_file = open('words.txt', 'r')
    all_words = words_file.read()
    words_file.close()
    all_words = all_words.split('\n')
    word = random.choice(all_words)
    return word

并设置word_id = choose_word

我已经添加了这个并且它似乎正在工作(我添加了一个打印语句来检查,它确实运行)但是我的Flask应用程序前端的单词永远不会更新

scheduler = BackgroundScheduler()
scheduler.start()
scheduler.add_job(choose_word, trigger='cron', hour='00', minute='00')
# Shut down the scheduler when exiting the app
atexit.register(lambda: scheduler.shutdown())

基本上,我每24小时都会尝试使用Flask应用程序上的Oxford Dictionaries API更新单词。

1 个答案:

答案 0 :(得分:0)

如果我已正确理解您的问题,您希望在浏览器窗口中打开的网络应用会在更新时自动显示新字词的页面。

为此,您需要编写将在浏览器中更新页面的Javascript代码。有很多方法可以做到这一点。这可能不是Flask可以解决的问题。

一种方法是让JS继续从Flask服务器获取URL,并在它返回的数据发生变化时执行某些操作。这很简单,唯一的缺点是如果要快速更新,必须经常刷新。例如。如果您每分钟获取一次数据,您的页面将在更改单词后一分钟内更新。

另一种方法是Flask服务器使用类似socketIO的东西来保持浏览器和服务器之间的连接始终打开,并在单词更改时发送消息。这可能是你的需求过度。