Beispiel #1
0
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']
Beispiel #2
0
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()
Beispiel #3
0
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
Beispiel #4
0
def refreshDB(interval):
    while True:
        SEARCH_DB.reopen()
        slog.info("Refresh DB.")
        time.sleep(interval)