我制作了一个 Flask-Python 网络应用程序,用于刮擦皇家马德里的固定装置并将其显示在整齐的倒计时页面中。我试图通过 Heroku 来托管它。我将抓取部分移动到主python脚本并通过 render_template 传递已删除的变量。
我的问题是Python脚本如何在Heroku服务器上运行?当有人打开网页或仅运行一次并提供请求时,是否会调用它?如果是这样的话有一种方法可以重新启动服务器或定期重新运行Python脚本,那么夹具中的更改会反映在网页中。
这是我的app.py
import requests
import datetime
from bs4 import BeautifulSoup as bs
from lxml import html
url = 'http://www.realmadrid.com/en/football/schedule'
response = requests.get(url)
html = response.content
soup = bs(html)
loc = soup.find('p', {'class': 'm_highlighted_next_game_location'}).contents
loc1 = loc[0]
if "Santiago" in loc1:
opp = soup.find('div',{'class':'m_highlighted_next_game_team m_highlighted_next_game_second_team'}).strong.contents
else:
opp = soup.find('div', {'class': 'm_highlighted_next_game_team'}).strong.contents
opp1=opp[0]
time = soup.find('div', {'class': 'm_highlighted_next_game_info_wrapper'}).time.contents
time1 = time[0]
date = soup.find('header', {'class': 'm_highlighted_next_game_header'}).time.contents
date1 = date[0]
times = time1.split(":")
dates = date1.split("/")
hour = times[0]
mintemp = times[1]
minutes = mintemp[:-2]
year = dates[0]
month = dates[1]
day = dates[2]
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html',hour=hour,minutes=minutes,year=year,month=month,day=day,loc=loc1,opp=opp1)
if __name__ == '__main__':
app.run(debug=True)
P.S:我第一次使用Heroku。如果听起来很蠢,请原谅。
答案 0 :(得分:1)
Heroku被认为是懒惰的'如果服务器闲置超过30分钟(也节省电量),则停止服务器。但是,如果您的应用程序发出请求,它将立即唤醒(可能需要几秒钟才能唤醒)。在您的情况下,它将在每次打开网站并发出请求时重新运行python脚本。
如果您想定期更新灯具而不从您的网站发出请求,请查看Heroku Scheduler,这样您就可以定期安排heroku任务。请记住,您需要让heroku服务器至少每天睡6小时免费版。
希望它有所帮助!