translator.py 1.58 KB
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Author: Erickson Silva
E-Mail: erickson.silva@lavid.ufpb.br

Author: Jonathan Lincoln Brilhante
E-Mail: jonathan.lincoln.brilhante@gmail.com

Author: Wesnydy Lima Ribeiro
E-Mail: wesnydy@lavid.ufpb.br
"""

import os
import pika
import PikaManager

from PortGlosa import traduzir
from time import sleep

# Manager of queues connections.
manager = PikaManager.PikaManager("rabbit")

def run(ch, method, properties, body):
    """
    Execute the worker.

    Parameters
    ----------
    ch : object
        Channel of communication.
    method : function
        Callback method.
    properties : object
        Message containing a set of 14 properties.
    body : string
        Json string containing the necessary arguments for workers.
    """
    print ("Translating...")
    gloss = traduzir(body)
    manager.send_to_queue("translations", gloss, properties)
    print ("Ok")

def keep_alive(conn_send, conn_receive):
    """
    Keep the connection alive.

    Parameters
    ----------
    conn_send : object
        Connection of writer.
    conn_receive : object
        Connection of receiver.
    """
    while True:
        sleep(30)
        try:
            conn_send.process_data_events()
            conn_receive.process_data_events()
        except:
            continue

# start_new_thread(keep_alive, (manager.get_conn_send(), manager.get_conn_receive()))

print ("Translator listening...")
while True:
    try:
        manager.receive_from_queue("texts", run)
    except KeyboardInterrupt:
        manager.close_connections()
        os._exit(0)