def bot_listening():

    print date_s(time.time()) + " START"

    tools = tool_connect.ToolConnect('match_and_split', 45130)

    try:
        while True:
            request, conn = tools.wait_request()

            try:
                print request

                cmd = request['cmd']
                title = request.get('title', '')
                lang = request.get('lang', '')
                user = request.get('user', '')
                server = request.get('server', '')
            except:
                ret = ret_val(E_ERROR, "invalid request")
                tools.send_reply(conn, ret)
                conn.close()
                continue

            t = time.time()
            user = user.replace(' ', '_')

            print(
                date_s(t) + " REQUEST " + user + ' ' + lang + ' ' + cmd + ' ' +
                title + ' ' + server).encode('utf-8')

            if cmd == "status":
                html = do_status()
                tools.send_text_reply(conn, html)
                conn.close()
            elif cmd == "match":
                jobs['number_of_match_job'] += 1
                jobs['match_queue'].put(title, lang, user, t, tools, server,
                                        conn)
            elif cmd == "split":
                jobs['number_of_split_job'] += 1
                jobs['split_queue'].put(title, lang, user, t, tools, server,
                                        conn)
            elif cmd == 'ping':
                tools.send_reply(conn, ret_val(E_OK, 'pong'))
                conn.close()
            else:
                tools.send_reply(conn,
                                 ret_val(E_ERROR, "unknown command: " + cmd))
                conn.close()

    finally:
        tools.close()
        on_exit(0, None)
def bot_listening(queue, cache):

    print date_s(time.time()) + " START"

    tools = tool_connect.ToolConnect('ws_ocr_daemon', 45133)

    try:
        while True:
            request, conn = tools.wait_request()

            try:
                url = request.get('url', '')
                lang = request.get('lang', '')
                user = request.get('user', '')
                cmd = request['cmd']
            except:
                ret = ret_val(E_ERROR, "invalid request")
                tools.send_reply(conn, ret)
                conn.close()
                continue

            t = time.time()
            print(
                date_s(t) + " REQUEST " + user + ' ' + lang + ' ' + cmd + ' ' +
                url).encode('utf-8')

            if cmd == "ocr":
                # bypass the job queue if the ocr is cached to ensure a cached
                # ocr will be returned as soon as possible.
                text = get_from_cache(cache, url, lang)
                if text:
                    tools.send_reply(conn, ret_val(E_OK, text))
                    conn.close()
                else:
                    queue.put(url, lang, user, t, tools, conn)

                next_page_url = next_url(url)

                queue.put(next_page_url, lang, user, t, None, None)
            elif cmd == 'status':
                html = do_status(queue)
                tools.send_text_reply(conn, html)
                conn.close()
            elif cmd == 'ping':
                tools.send_reply(conn, ret_val(E_OK, 'pong'))
                conn.close()
            else:
                tools.send_reply(conn,
                                 ret_val(E_ERROR, "unknown command: " + cmd))
                conn.close()
    finally:
        tools.close()
Example #3
0
def bot_listening(queue):

    print date_s(time.time()) + " START"

    tools = tool_connect.ToolConnect('verify_match', 45131)

    try:
        while True:
            request, conn = tools.wait_request()

            try:
                print request

                cmd = request['cmd']
                title = request.get('title', '')
                lang = request.get('lang', '')
                user = request.get('user', '')
            except:
                ret = ret_val(E_ERROR, "invalid request")
                tools.send_reply(conn, ret)
                conn.close()
                continue

            t = time.time()
            user = user.replace(' ', '_')

            print(
                date_s(t) + " REQUEST " + user + ' ' + lang + ' ' + cmd + ' ' +
                title).encode('utf-8')

            if cmd == "verify":
                queue.put(title, lang, user, t, tools, conn)
            elif cmd == 'status':
                html = do_status(queue)
                tools.send_text_reply(conn, html)
                conn.close()
            elif cmd == 'ping':
                tools.send_reply(conn, ret_val(E_OK, 'pong'))
                conn.close()
            else:
                tools.send_reply(conn,
                                 ret_val(E_ERROR, "unknown command: " + cmd))
                conn.close()

    finally:
        tools.close()
        print >> sys.stderr, "STOP"