Как добавить сообщения в очередь в другой функции и прочитать ее - PullRequest
0 голосов
/ 18 февраля 2019

Я делал приложение, в котором мне нужно было реализовать сокет.Поэтому я решил добавить сообщения сокетов из разных функций и добавить все сообщения в одну очередь, бесконечно читать их и отправлять оттуда сообщения.

Но моя проблема заключается в том, что когда я добавляю сообщение в очередь, то же самое не принимается вReader.

Пожалуйста, любая помощь или лучшая идея для обработки сообщений в приветствии.

Мой код выглядит так: -

from queue import Queue

from bot.core.utils import singleton


@singleton
class SocketFeedService:
    feed_queue = Queue()

    def add_message(self, username, message):
        message_dict = dict(user=username, message=message)
        print("Adding message", message_dict)
        SocketFeedService().feed_queue.put(message_dict)

    def reader(self):
        while True:
            message = SocketFeedService().feed_queue.get(block=False)
            print("feed message", message)
            SocketFeedService().feed_queue.task_done()

Синглтон реализован следующим образом: -

def singleton(class_):
    instances = {}

    def get_instance(*args, **kwargs):
        if class_ not in instances:
            instances[class_] = class_(*args, **kwargs)
        return instances[class_]

    return get_instance

И добавив сообщение вроде этого: -

SocketFeedService().add_message(self.bot.user_instance.username,
                                                            log_string)

Я также пытался читать в другой теме, но это не сработало

Спасибо за любую помощь.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...