def latestDailyStats(self): memcache_key = "daily_stats_dates"+str(datetime.date.today()) logging.info('looking up for memcache key: %s' % memcache_key) if memcache.get(memcache_key): logging.info('key found in cache') return memcache.get(memcache_key) topDailyStat = DailyDomainStats.gql(' ORDER by date desc ').get() if topDailyStat: dateInStats = topDailyStat.date if not dateInStats: logging.info('can\'t figure out last succesful daily stats execution') return None numberOfStats = 5 dayOffset = 1 datesForDailyStats = [] while numberOfStats > 0: logging.info('daily stats date : %s ' % dateInStats) datesForDailyStats.append(dateInStats) dateInStats = dateInStats - datetime.timedelta(days = 1) numberOfStats = numberOfStats - 1 logging.info("daily stats dates %s" % datesForDailyStats) memcache.set(memcache_key, datesForDailyStats) return datesForDailyStats
def dailyFeed(self,tdate,reqId): try: if not tdate: today = datetime.date.today() yesterday=datetime.date.today() - datetime.timedelta(days=1) targetdate=yesterday else: try: targetdate=datetime.datetime.strptime(tdate, '%Y-%m-%d').date() except: e = sys.exc_info()[1] logging.error('error formating date %s => %s' %(tdate, e)) targetdate=datetime.date.today() - datetime.timedelta(days=1) logging.info('Fetching stats for %s' % targetdate) dailyStats=DailyDomainStats.gql('WHERE date = :1 ORDER BY count DESC ', targetdate) if dailyStats is None or dailyStats.count() == 0 : logging.info('Not enough data for graph') self.response.out.write('Not enough data for graph') return logging.info('about to prepare %s query results for visualisation.' % dailyStats.count()) datastore = self.prepareforvisualize(dailyStats) # prepare for output description ={"domain": ("string", "Domain"), "count":("number", "Total Links")} columnnames = [ "domain", "count" ] data_table = gviz_api.DataTable(description) data_table.LoadData(datastore) self.response.headers['Content-Type'] = 'text/plain' self.response.out.write(data_table.ToJSonResponse(columns_order=(columnnames), req_id=reqId)) except: e = sys.exc_info()[1] logging.error('Error while fetching daily feed %s' % e)