【问题标题】:Updating URL by using apscheduler to run a function使用 apscheduler 更新 URL 以运行函数
【发布时间】:2017-09-20 08:17:00
【问题描述】:

我正在尝试更新此 URL,以便单词可以更改(使用牛津词典 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 应用程序上使用牛津词典 API 更新单词。

【问题讨论】:

    标签: python api flask


    【解决方案1】:

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

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

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

    另一种方法是 Flask 服务器使用类似 socketIO 的东西来保持浏览器和服务器之间的连接一直打开,并在单词发生变化时发送消息。对于您的需求,这可能是多余的。

    【讨论】:

    • 是的,这正是我想要做的。因此,如果我只想在每天晚上 00:00 运行它,我需要考虑编写一些 JS 来获取 URL?会不会是 api.jquery.com/jquery.get 之类的东西?
    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多