def queryapp(env, start_response): if env["PATH_INFO"] == '/': # get the parameters query_dict = parse_qs(env['QUERY_STRING']) query_string = query_dict.get('query',[''])[0] offset = query_dict.get('offset',[0])[0] pagesize = query_dict.get('psize',[QUERY_PAGESIZE])[0] if not query_string: slog.warning("400 Bad Request. Missing parameter.") start_response('400 Bad Request',[('Content-Type',\ 'text/plain')]) return ['Bad Request! Missing Parameter'] # escape to avoid script injection query_string = escape(query_string) offset = int(offset) pagesize = int(pagesize) # search and format matches = search(query_string, offset, pagesize) result = getJson(matches, offset, pagesize) slog.info("Finish. [query]: %s, [offset]: %d, [pagesize]: %d" %\ (query_string, offset, pagesize)) # return result start_response("200 OK",[('Content-Type', 'application/json'),\ ('Content-Length',str(len(result)))]) return [result] else: start_response('404 Not Found', [("Content-Type",'text/plain')]) return ['Not Found']
def start(): # start refresh thread refresh_interval = int(config.get("refresh_interval")) refresh = threading.Thread(target=refreshDB, args=(refresh_interval,)) refresh.start() # start the server host = config.get("queryserver_host") port = int(config.get("queryserver_port")) poolSize = int(config.get("queryserver_pool")) p = pool.Pool(poolSize) slog.info("Start query server on %s:%s with pool size %s" % (host, port, poolSize)) wsgi.WSGIServer((host,port), queryapp, spawn=p).serve_forever()
def startSearchService(): # start the push server push_server.start() message = "Push Server start in process: %d" % push_server.pid plog.info(message) print message # start the index engine index_engine.start() message = "Index engine start in process: %d" % index_engine.pid ilog.info(message) print message # start the query server query_server.start() message = "Query server start in process: %d" % query_server.pid slog.info(message) print message
def refreshDB(interval): while True: SEARCH_DB.reopen() slog.info("Refresh DB.") time.sleep(interval)