Example #1
0
    def subscribe_producer(
            request_queue_name: str, answer_queue_name: str,
            request_callback: Callable[[dict, Callable[[any], None]], bool]):
        def answer_callback(msg_id: int, answer) -> None:
            total_answer = {
                'id': msg_id,
                'ans': answer,
            }
            QueueWrapper.send_message(answer_queue_name,
                                      dump_object(total_answer))

        def req_callback(ch: BlockingChannel, method: spec.Basic.Deliver,
                         _: spec.BasicProperties, body: bytes):
            body: ReqBody = load_object(body)
            ack = request_callback(
                body['req'],
                lambda answer: answer_callback(body['id'], answer))
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        QueueWrapper.subscribe_to_queue(callback=req_callback,
                                        queue=request_queue_name,
                                        auto_ack=False)
Example #2
0
 def answer_callback(msg_id: int, answer) -> None:
     total_answer = {
         'id': msg_id,
         'ans': answer,
     }
     QueueWrapper.send_message(answer_queue_name,
                               dump_object(total_answer))
 def write_msg(msg_id, request):
     message = {
         'id': msg_id,
         'req': request
     }
     packed = dump_object(message)
     QueueWrapper.send_message(request_queue_name, packed)
Example #4
0
 def register():
     QueueWrapper.clear_queue(config.parse_all_moscow_req_queue, is_publish=True)
     GlobalParser.parse_request_function = ConsumerFactory.get_consumer(config.parse_all_moscow_req_queue,
                                                                        config.parse_all_moscow_ans_queue,
                                                                        GlobalParser.link_parsed)
     GlobalParser.offers_send_function = StraightQueue.get_sender(config.new_offers_queue)
     GlobalParser.thread = threading.Thread(target=GlobalParser.work)
     GlobalParser.thread.start()
    def subscribe_getter(queue_name, callback):
        def req_callback(ch, method, properties, body):
            body = load_object(body)
            ack = callback(body)
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        QueueWrapper.subscribe_to_queue(callback=req_callback,
                                        queue=queue_name,
                                        no_ack=False)
Example #6
0
    def subscribe_getter(queue_name, callback):
        def req_callback(ch: BlockingChannel, method: spec.Basic.Deliver,
                         _: spec.BasicProperties, body: bytes):
            body = load_object(body)
            ack = callback(body)
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        QueueWrapper.subscribe_to_queue(callback=req_callback,
                                        queue=queue_name,
                                        auto_ack=False)
    def get_consumer(request_queue_name, answer_queue_name, answer_callback):
        def raw_answer_callback(ch, method, properties, body):
            body = load_object(body)
            ack = answer_callback(body['id'], body['ans'])
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        def write_msg(msg_id, request):
            message = {'id': msg_id, 'req': request}
            packed = dump_object(message)
            QueueWrapper.send_message(request_queue_name, packed)

        QueueWrapper.subscribe_to_queue(callback=raw_answer_callback,
                                        queue=answer_queue_name,
                                        no_ack=False)
        return write_msg
    def subscribe_producer(request_queue_name, answer_queue_name, request_callback):
        def answer_callback(msg_id, answer):
            total_answer = {
                'id': msg_id,
                'ans': answer,
            }
            QueueWrapper.send_message(answer_queue_name, dump_object(total_answer))

        def req_callback(ch, method, properties, body):
            body = load_object(body)
            ack = request_callback(body['req'], lambda answer: answer_callback(body['id'], answer))
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        QueueWrapper.subscribe_to_queue(callback=req_callback,
                                        queue=request_queue_name,
                                        no_ack=False)
def main():
    logger = LoggerInit.init_logging(config.log_file)

    logger.info('Application started')
    QueueWrapper.init()
    bot = Telegram(config.api_key)
    UserManager.init(bot)
    User.init()
    QueueWrapper.start(detach=True)
    try:
        for _ in bot.get_updates():
            pass
        while True:
            logger.debug("Getting updates")
            for query in bot.get_updates(timeout=30):
                logger.debug(f'==> {query}')
                query_type = query['type']
                body = query['body']
                user_id = query['uid']
                user = UserManager.get_or_create_user(user_id)
                if query_type == 'message':
                    logger.debug("Sending message to user {}".format(user_id))
                    user.process_message(body)
                elif query_type == 'inline_req':
                    logger.debug("Sending inline request to user {}".format(user_id))
                    user.process_inline_req(body)
                elif query_type == 'inline_ans':
                    logger.debug("Sending inline answer to user {}".format(user_id))
                    user.process_inline_ans(body)
                elif query_type == 'callback':
                    logger.debug("Sending callback to user {}".format(user_id))
                    user.process_callback(body)
    except KeyboardInterrupt:
        logger.debug('QueueWrapper.close')
        QueueWrapper.close()
    def get_consumer(request_queue_name, answer_queue_name, answer_callback):
        def raw_answer_callback(ch, method, properties, body):
            body = load_object(body)
            ack = answer_callback(body['id'], body['ans'])
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        def write_msg(msg_id, request):
            message = {
                'id': msg_id,
                'req': request
            }
            packed = dump_object(message)
            QueueWrapper.send_message(request_queue_name, packed)

        QueueWrapper.subscribe_to_queue(callback=raw_answer_callback,
                                        queue=answer_queue_name,
                                        no_ack=False)
        return write_msg
    def get_consumer(request_queue_name: str, answer_queue_name: str,
                     answer_callback: Callable[[dict, any], Optional[bool]]):
        def raw_answer_callback(ch: BlockingChannel,
                                method: spec.Basic.Deliver,
                                _: spec.BasicProperties, body: bytes):
            body: AnsBody = load_object(body)
            ack = answer_callback(body['id'], body['ans'])
            if ack is None:
                ack = True
            if ack:
                ch.basic_ack(delivery_tag=method.delivery_tag)
            else:
                ch.basic_nack(delivery_tag=method.delivery_tag)

        def write_msg(msg_id: dict, request: dict):
            message = {'id': msg_id, 'req': request}
            packed: bytes = dump_object(message)
            QueueWrapper.send_message(request_queue_name, packed)

        QueueWrapper.subscribe_to_queue(callback=raw_answer_callback,
                                        queue=answer_queue_name,
                                        auto_ack=False)
        return write_msg
def main():
    LoggerInit.init_logging(config.log_update_manager_file)
    QueueWrapper.init()
    UpdatesManager.init_manager()
    QueueWrapper.start(detach=True)
    try:
        UpdatesManager.worker()
    except KeyboardInterrupt:
        QueueWrapper.close()
def main():
    LoggerInit.init_logging(config.log_update_manager_file)
    QueueWrapper.init()
    UpdatesManager.init_manager()
    QueueWrapper.start(detach=True)
    try:
        UpdatesManager.worker()
    except KeyboardInterrupt:
        QueueWrapper.close()
def main():
    QueueWrapper.init()
    ProducerFactory.subscribe_producer(config.check_url_req_queue, config.check_url_ans_queue,
                                       check_url_callback)
    ProducerFactory.subscribe_producer(config.parse_url_req_queue, config.parse_url_ans_queue,
                                       parse_url_callback)
    ProducerFactory.subscribe_producer(config.parse_all_moscow_req_queue, config.parse_all_moscow_ans_queue,
                                       parse_url_callback)
    try:
        QueueWrapper.start(detach=False)
    except KeyboardInterrupt:
        QueueWrapper.close()
Example #15
0
def main():
    QueueWrapper.init()
    GlobalParser.register()
    SuspiciousChecker.register()
    QueueWrapper.start(detach=True)
    try:
        while True:
            time.sleep(60 * 60 * 60)
    except KeyboardInterrupt:
        GlobalParser.close_thread()
        SuspiciousChecker.close_thread()
        QueueWrapper.close()
Example #16
0
def main():
    QueueWrapper.init()
    ProducerFactory.subscribe_producer(config.check_url_req_queue,
                                       config.check_url_ans_queue,
                                       check_url_callback)
    ProducerFactory.subscribe_producer(config.parse_url_req_queue,
                                       config.parse_url_ans_queue,
                                       parse_url_callback)
    ProducerFactory.subscribe_producer(config.parse_all_moscow_req_queue,
                                       config.parse_all_moscow_ans_queue,
                                       parse_url_callback)
    try:
        QueueWrapper.start(detach=False)
    except KeyboardInterrupt:
        QueueWrapper.close()
 def write_msg(msg_id: dict, request: dict):
     message = {'id': msg_id, 'req': request}
     packed: bytes = dump_object(message)
     QueueWrapper.send_message(request_queue_name, packed)
Example #18
0
import LoggerInit
import config
import pytz
from datetime import datetime
import time
import logging

from GlobalManager.GlobalParser import GlobalParser
from GlobalManager.SuspiciousChecker import SuspiciousChecker
from Queues import QueueWrapper
from Queues.ProducerConsumer.ConsumerFactory import ConsumerFactory

LoggerInit.init_logging(config.log_all_moscow_file)
logger = logging.getLogger("AllMoscowParser")

if __name__ == "__main__":
    QueueWrapper.init()
    GlobalParser.register()
    SuspiciousChecker.register()
    QueueWrapper.start(detach=True)
    try:
        while True:
            time.sleep(60 * 60 * 60)
    except KeyboardInterrupt:
        GlobalParser.close_thread()
        SuspiciousChecker.close_thread()
        QueueWrapper.close()
 def write_msg(request):
     packed = dump_object(request)
     QueueWrapper.send_message(queue_name, packed)
 def answer_callback(msg_id, answer):
     total_answer = {
         'id': msg_id,
         'ans': answer,
     }
     QueueWrapper.send_message(answer_queue_name, dump_object(total_answer))