Skip to content

Commit

Permalink
Memcache support for json requests
Browse files Browse the repository at this point in the history
  • Loading branch information
javaguirre committed May 8, 2012
1 parent aeaa115 commit 0876b0a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Original file line Diff line number Diff line change
@@ -1 +1,2 @@
*.pyc *.pyc
*.sw?
23 changes: 16 additions & 7 deletions scrappy.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from google.appengine.ext import webapp from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext.webapp.util import run_wsgi_app
#template support #template support
import os
from google.appengine.ext.webapp import template from google.appengine.ext.webapp import template
from google.appengine.api import memcache
#imports for the app itself #imports for the app itself
import urllib2 import urllib2
try: try:
Expand All @@ -13,16 +13,20 @@
from BeautifulSoup import BeautifulSoup from BeautifulSoup import BeautifulSoup
import re import re



class DRAEResults(webapp.RequestHandler): class DRAEResults(webapp.RequestHandler):
def fetchResults(self): def fetch_query(self):
query = "" query = ""
#>print self.request.path
#/json
fetchString = re.search("/w/(json|xml)/(.*)",self.request.path) fetchString = re.search("/w/(json|xml)/(.*)",self.request.path)
if (fetchString != None): if (fetchString != None):
query = fetchString.group(2) #group(1) is either XML or JSON query = fetchString.group(2) #group(1) is either XML or JSON
else: else:
query = self.request.get('query') query = self.request.get('query')

return query

def fetchResults(self):
query = self.fetch_query()
requestType = 0 requestType = 0
if (self.request.get('type') != None): if (self.request.get('type') != None):
requestType = self.request.get('type') requestType = self.request.get('type')
Expand All @@ -43,13 +47,18 @@ def fetchResults(self):


class JSONResults(DRAEResults): class JSONResults(DRAEResults):
def get(self): def get(self):
resultList = self.fetchResults() query = self.fetch_query()
jsonResults = json.dumps(resultList) #results in JSON json_results = memcache.get(query)
if not json_results:
resultList = self.fetchResults()
if resultList:
memcache.add(query, json_results, 300)
json_results = json.dumps(resultList) #results in JSON


self.response.headers['Content-Type'] = 'application/json' self.response.headers['Content-Type'] = 'application/json'
self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.headers['Access-Control-Allow-Origin'] = '*'
self.response.headers['Access-Control-Allow-Methods'] = 'GET' self.response.headers['Access-Control-Allow-Methods'] = 'GET'
self.response.out.write(jsonResults) self.response.out.write(json_results)


class XMLResults(DRAEResults): class XMLResults(DRAEResults):
def get(self): def get(self):
Expand Down

0 comments on commit 0876b0a

Please sign in to comment.