2016-03-30 16 views
0

Real Madrid'in fikstürünü kazıyan ve temiz bir geri sayım sayfasında görüntüleyen bir Flask-Python web uygulaması yaptım. Heroku aracılığıyla ev sahipliği yapmaya çalışıyorum. kazıma parçasını ana python betiğine taşıdım ve render_template ile kazınmış değişkenleri ilettim.Periyodik olarak Heroku Python komut dosyasını yeniden başlatmak

Benim sorum Python betiği Heroku sunucularında nasıl çalışır? Birisi web sayfasını açtığında mı, yoksa sadece bir kez mi çalışıyor ve istekleri mi sunuyor? Böyle bir durumda, sunucuların yeniden başlatılması ya da Python komut dosyasını düzenli olarak tekrar çalışmanın bir yolu var, böylece fikstürlerdeki değişiklikler web sayfasına yansıtılıyor.

İşte benim 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.: Ben ilk defa Heroku kullanıyorum. Bir şey aptalca geliyorsa lütfen affedin.

cevap

0

Heroku 'tembel' olarak kabul edilir ve 30 dakikadan daha uzun bir süredir boşta kalıyorsa (aynı zamanda gücü korumak için) sunucuları durdurur. Ancak, uygulamanız bir istekte bulunursa, hemen uyanacaktır (uyandırmak için birkaç saniye sürebilir). Sizin durumunuzda, web sitesinin her açıldığında python betiğini yeniden çalıştırır ve bir istek yapılır.

Web sitenizden istekte bulunmaksızın armatürleri periyodik olarak güncellemek isterseniz, e-posta görevlerini düzenli aralıklarla planlamanıza olanak veren Heroku Scheduler'a bakın. Ücretsiz sürüm için heroku sunucusunun en az 6 saat/gün uyumasına izin vermeniz gerektiğini unutmayın.

Umut eder!