2016-03-30 6 views
0

Ich machte eine Flask-Python Web-Anwendung, die das Gerät von Real Madrid kratzt und zeigt es in einer ordentlichen Countdown-Seite. Ich versuche, es über Heroku zu hosten. Ich habe den Scraping-Teil zum Haupt-Python-Skript verschoben und die Scraped-Variablen über render_template übergeben.Erneutes Starten von Heroku Python-Skript in regelmäßigen Abständen

Meine Frage ist, wie läuft das Python-Skript auf den Heroku-Servern? Wird es aufgerufen, wenn jemand die Webseite öffnet oder läuft sie nur einmal und bedient die Anfragen? Wenn es so ist, gibt es eine Möglichkeit, die Server neu zu starten oder das Python-Skript in regelmäßigen Abständen erneut auszuführen, damit sich die Änderungen in den Fixtures auf der Webseite widerspiegeln.

Hier ist meine 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: Ich bin mit Heroku zum ersten Mal. Bitte entschuldigen Sie, wenn sich etwas dumm anhört.

Antwort

0

Heroku gilt als "faul" und stoppt Server, wenn sie länger als 30 Minuten inaktiv waren (auch um Strom zu sparen). Wenn Ihre App jedoch eine Anfrage stellt, wird sie sofort wieder aufwachen (das Aufwachen kann einige Sekunden dauern). In Ihrem Fall wird das Python-Skript jedes Mal erneut ausgeführt, wenn die Website geöffnet und eine Anfrage gestellt wird.

Wenn Sie Fixtures regelmäßig aktualisieren möchten, ohne eine Anfrage von Ihrer Website zu senden, lesen Sie Heroku Scheduler, mit der Sie regelmäßig Heroku-Aufgaben planen können. Denken Sie daran, dass Sie den Heroku-Server für die kostenlose Version mindestens 6 Stunden pro Tag schlafen lassen müssen.

Hoffe es hilft!

Verwandte Themen