プロが教える店舗&オフィスのセキュリティ対策術

レスポンスを早くしたい。(python)
google app engine/pythonを利用してまとめのまとめサイトを作成しているのですが、レスポンスにかなり時間がかかってしまいます。
rssをただ上書きでページに表示するのではなく、過去に配信された記事(このrss配列に保存した日から)は全て保存しておきたいです。

恐らく下記関数の部分が重いと思うのですが、なんとか改善することはできないでしょうか?
※全角スペースでインデントしています。

from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
import os
import cgi
import math
import datetime
import feedparser

def Rss():
 rss = [
["http://hoge1.com/index.rdf",u"サイト名1","http://hoge1.com/"],
["http://hoge2.com/index.rdf",u"サイト名2","http://hoge2.com/"],
["http://hoge3.com/index.rdf",u"サイト名3","http://hoge3.com/"],
["http://hoge4.com/index.rdf",u"サイト名4","http://hoge4.com/"],
["http://hoge5.com/index.rdf",u"サイト名5","http://hoge5.com/"],
["http://hoge6.com/index.rdf",u"サイト名6","http://hoge6.com/"]]

 for r in range(len(rss)):
  f = feedparser.parse(rss[r][0])
  results = Nich.all().filter('site_url =', rss[r][2]).order('-date').fetch(limit=1)
  if results:
   for i in range(0,len(f.entries)):
    date = datetime.datetime.strptime(f.entries[i].updated,'%Y-%m-%dT%H:%M:%S+09:00')
    for result in results:
     if result.date < date:
      nich = Nich()
      nich.e_title = f.entries[i].title
      nich.e_body = f.entries[i].summary.replace('\n',' ')
      nich.e_url = f.entries[i].links[0].href
      nich.site = rss[r][1]
      nich.site_url = rss[r][2]
      nich.hit = 0;
      nich.date = date
      nich.put()
  else:
   for i in range(0,len(f.entries)):
    date = datetime.datetime.strptime(f.entries[i].updated,'%Y-%m-%dT%H:%M:%S+09:00')
    nich = Nich()
    nich.e_title = f.entries[i].title
    nich.e_body = f.entries[i].summary.replace('\n',' ')
    nich.e_url = f.entries[i].links[0].href
    nich.site = rss[r][1]
    nich.site_url = rss[r][2]
    nich.hit = 0;
    nich.date = date
    nich.put()

現在、ダッシュボードのAvg CPU (API)という項目が、平均して4000(3000)という状態です。赤文字です。

意味不明な部分があれば言ってくださればすぐに補足しますので、どうか宜しくお願いします。

A 回答 (1件)

pythonはわからないので、アルゴリズムだけですが。



こういう他サイトからデータを取ってくるCGIは、データの取得に時間がかかることが殆どですから、
一定期間、自分のサーバーにキャッシュデータとして保存しておき、それを利用するようにしてはどうでしょうか。

もちろん一定期間が過ぎればキャッシュデータを更新するためにRSS/RDFファイルを取り直す必要がありますので、その時のみ時間がかかってしまいますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!