Example #1
0
	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
Example #2
0
	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)