После того как крон настроен можно использовать его для пополнения БД именуемой в терминах гугл - хранилище. Немного покопавшись в доках, поймал себя на на том что крутится мысль что это жесть. На самом деле всё оказалось не так. Первое что пришлось сделать изменить структуры модели (таблицы в терминах хранилища), сделать её ещё более линейной и тупой, ниже вы можете в этом убедится сами. Это нормально, т.к. к этой модели будет прикручен кэш, отдельная модель которая будет содержать нужные выборки (но это потом). Ввиду того что уже крон настроен, осталось прописать действия в скрипте. По крону добавляется запись, а по запросу выдаётся.
Листинг 'main.py':
.*? ", re.I|re.S)
rt = re.compile("<.*?>", re.I)
res = urlfetch.fetch(trend_url)
if res.status_code != 200:
abort(404)
content = res.content
trends = rl.findall(content)
trends = [rt.sub("", t).strip() for t in trends]
for t in trends:
__t = Trends()
__t.trend = t
__t.video = ""
__t.news = ""
__t.ct = ""
__t.cf = ""
__t.put()
def main():
run(server='gae')
if __name__ == '__main__':
main()
Листинг 'main.py':
#!/usr/bin/env python
# encoding: utf-8
from bottle import route, run, view, request, redirect, response, post, abort, debug, error
from google.appengine.api import urlfetch
from google.appengine.ext import db
import re
debug(True)
class Trends(db.Model):
trend = db.StringProperty()
time = db.DateTimeProperty(auto_now=True)
video = db.StringProperty()
news = db.TextProperty()
ct = db.TextProperty()
cf = db.TextProperty()
@route('/')
@route('')
@view('home')
def home_view():
trends = db.GqlQuery("SELECT * FROM Trends ORDER BY time DESC LIMIT 20")
return {"trends" : trends }
@route('/tasks/trends_update')
@route('/tasks/trends_update/')
def trends_update():
trends = []
trend_url = "http://www.google.com/trends/hottrends/atom/hourly"
rl = re.compile("
Комментариев нет:
Отправить комментарий