import os, time, cgi from google.appengine.ext import db startTime = time.time() """Demonstration of Google apps. Simple CGI script that dislpays the IP addresses of last 10 visitors.""" sourceIP = os.environ['REMOTE_ADDR'] httpReferer = os.environ.get('HTTP_REFERER', 'No referer') class VisitRecord(db.Model): "A simple persistent data object" source = db.StringProperty(required=True) referer = db.StringProperty(required=False, default="No referer") # This should really be an int; sorting broken timestamp = db.StringProperty(required=True) # Create a record of this visit and store it vr = VisitRecord(source=sourceIP, timestamp=time.ctime(), referer=httpReferer) vr.put() # Now get a list of the last 10 visitors query = db.GqlQuery("""select * from VisitRecord order by timestamp desc""") recentVisits = query.fetch(10) # Traverse the data records to get some aggregate stats allQuery = db.GqlQuery("select * from VisitRecord") ips = set() visitCount = 0 referers = {} for row in allQuery: visitCount += 1 ips.add(row.source) referers[row.referer] = 1 + referers.get(row.referer, 0) uniqueIpCount = len(ips) displayReferers = [(v, k) for k, v in referers.items()] displayReferers.sort() displayReferers.reverse() # Render some HTML print 'Content-Type: text/html' print '' print '
It took %.3fs to execute this app." % (endTime - startTime)