def wrapped(handler): cache_key = handler.request.uri cache_item = cache.get(cache_key) if cache_item is None: cache_item = responder(handler) cache.set(cache_key, cache_item, time=settings.CACHE_TIME) else: logger.info("Using cache for '%s' query" % cache_key) return cache_item
def _query_recipes(self, spec): logger.info("Querying db with %s" % repr(spec)) recipe_results = db.recipes.find(spec) result_count = recipe_results.count() logger.info("Found %d results for '%s' (capping at %d)" % \ (result_count, self.terms, settings.RESULTS_CAP)) # limit results so we don't search within every result (would not scale) recipe_results = recipe_results.limit(settings.RESULTS_CAP) return recipe_results
def search(self): self.results = [] for allergen in self.allergens: # query spec = self._get_query_spec() matching_recipes = self._query_recipes(spec) full_count = matching_recipes.count() allergen_presence = self._query_allergen_presence(matching_recipes, allergen) allergen_presence_count = allergen_presence.count() logger.info("%d results of %d containing allergen '%s'" % (allergen_presence_count, full_count, allergen)) result = AllergenPresenceResult(allergen, self.terms, full_count, allergen_presence_count) self.results.append(result) return self.results
def start_api(port): logger.info("Starting allergy assassin api on port %d" % port) application.listen(port) tornado.ioloop.IOLoop.instance().start()