#!/usr/bin/env python
import webapp2
import urllib2
import logging
from google.appengine.api import memcache
from google.appengine.api import taskqueue
def update():
memcache.set(key="counter", value=0)
for i in xrange(10):
logging.info("I = {}".format(i))
req = urllib2.Request('http://localhost:8082')
r = urllib2.urlopen(req).read()
memcache.incr("counter")
class MainHandler(webapp2.RequestHandler):
def get(self):
count = memcache.get('counter')
self.response.write(count)
def post(self):
agent = self.request.headers
self.response.write(agent)
class AjaxHandler(webapp2.RequestHandler):
def post(self):
taskqueue.add(url="/worker")
self.response.write("Working...")
class WorkHandler(webapp2.RequestHandler):
def post(self):
update()
app = webapp2.WSGIApplication([
('/', MainHandler),
('/aj', AjaxHandler),
('/worker', WorkHandler)
], debug=True)
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgppbXBvcnQgd2ViYXBwMgppbXBvcnQgdXJsbGliMgppbXBvcnQgbG9nZ2luZwpmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCBtZW1jYWNoZQpmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB0YXNrcXVldWUKCmRlZiB1cGRhdGUoKToKICAgIG1lbWNhY2hlLnNldChrZXk9ImNvdW50ZXIiLCB2YWx1ZT0wKQogICAgZm9yIGkgaW4geHJhbmdlKDEwKToKICAgICAgICBsb2dnaW5nLmluZm8oIkkgPSB7fSIuZm9ybWF0KGkpKQoKICAgICAgICByZXEgPSB1cmxsaWIyLlJlcXVlc3QoJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MicpCiAgICAgICAgciA9IHVybGxpYjIudXJsb3BlbihyZXEpLnJlYWQoKQogICAgICAgIAogICAgICAgIG1lbWNhY2hlLmluY3IoImNvdW50ZXIiKQoKY2xhc3MgTWFpbkhhbmRsZXIod2ViYXBwMi5SZXF1ZXN0SGFuZGxlcik6CiAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgIGNvdW50ID0gbWVtY2FjaGUuZ2V0KCdjb3VudGVyJykKICAgICAgICBzZWxmLnJlc3BvbnNlLndyaXRlKGNvdW50KQoKICAgIGRlZiBwb3N0KHNlbGYpOgogICAgICAgIGFnZW50ID0gc2VsZi5yZXF1ZXN0LmhlYWRlcnMKICAgICAgICBzZWxmLnJlc3BvbnNlLndyaXRlKGFnZW50KQoKY2xhc3MgQWpheEhhbmRsZXIod2ViYXBwMi5SZXF1ZXN0SGFuZGxlcik6CiAgICBkZWYgcG9zdChzZWxmKToKICAgICAgICB0YXNrcXVldWUuYWRkKHVybD0iL3dvcmtlciIpCiAgICAgICAgc2VsZi5yZXNwb25zZS53cml0ZSgiV29ya2luZy4uLiIpCgpjbGFzcyBXb3JrSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVyKToKICAgIGRlZiBwb3N0KHNlbGYpOgogICAgICAgIHVwZGF0ZSgpCgphcHAgPSB3ZWJhcHAyLldTR0lBcHBsaWNhdGlvbihbCiAgICAoJy8nLCBNYWluSGFuZGxlciksCiAgICAoJy9haicsIEFqYXhIYW5kbGVyKSwKICAgICgnL3dvcmtlcicsIFdvcmtIYW5kbGVyKQpdLCBkZWJ1Zz1UcnVlKQ==