如何让我的网站在每次有人访问时或每隔几分钟重新运行一些 python flask 代码?

How can I get my site to rerun some python flask code every time someone visits or every few minutes?

这是我第一次开发网站,遇到了一些问题。我有一些 python 代码可以使用 beautifulsoup4 抓取一些数据并使用 flask 在我的网站上显示数字。但是,我发现我的站点根本不会自动更新这些值,而只会在我手动重新加载主机时更新。

我怎样才能让我的 python 脚本 "re-scrapes" 每次访问者访问我的网站,或者每 5 分钟左右一次?任何帮助将不胜感激! 强调文字 主机- Pythonanywhere

这是我当前的后端 python 代码:

import bs4 as bs
import urllib.request
from flask import Flask, render_template

app = Flask(__name__)

link = urllib.request.urlopen('https://www.health.pa.gov/topics/disease/coronavirus/Pages/Cases.aspx')
soup = bs.BeautifulSoup(link, 'lxml')

body = soup.find('body')  # get the body so you can do soup.find_all() inside it
tables = soup.find_all('table')

for table in tables:
    table_rows = table.find_all('tr')
    for tr in table_rows:
        td = tr.find_all('td')
        row = [i.text for i in td]
        if row.count('Bucks') > 0:
            print(row[1])
            # Bucksnum shows the amount of cases in bucks county,
            bucksnum = str(row[1])
            data = bucksnum




# this is the part that connects the flask file to the html file
@app.route("/")
def home():
    return render_template("template.html", data=data)


@app.route("/")
def index():
    return bucksnum


if __name__ == '__main__':
    app.run(host='0.0.0.0')

index()

您需要使用调度程序,查看讨论类似问题的 thread,您可以使用它来调用某个函数,每隔一段时间更新一次数据。

您的应用程序仅在启动时收集一次数据。如果您希望它在每次有人访问该页面时都抓取数据,您可以将抓取和处理 table 数据的代码放入 @app.route('/route') 包装器指示的相关视图函数中,并且每次访问该函数时都会 运行。