2016-03-30 2 views
0

Я сделал Flask-Python веб-приложение, которое скрежет светильника Real Madrid и отображает его на аккуратной странице обратного отсчета. Я пытаюсь разместить его через Heroku. я переместил часть выскабливания на главный скрипт python и передал скребковые переменные через render_template.Периодически перезагружался скрипт Python Heroku

Мой вопрос: как работает скрипт 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

Heroku считается «ленивым» и останавливает серверы, если они простаивают более 30 минут (также для экономии энергии). Однако, если ваше приложение делает запрос, оно будет пробуждаться (может занять пару секунд, чтобы проснуться). В вашем случае он перезапустит скрипт python каждый раз, когда веб-сайт будет открыт, и будет выполнен запрос.

Если вы хотите периодически обновлять светильники без запроса с вашего сайта, ознакомьтесь с Heroku Scheduler, что позволяет периодически планировать задачи герою. Имейте в виду, что вам нужно дать сервер герою спать не менее 6 часов в день для бесплатной версии.

Надеюсь, это поможет!

Смежные вопросы