如何将消息添加到具有不同功能的队列中并进行读取

时间:2019-02-18 17:29:12

标签: python django multithreading queue python-3.6

我正在制作一个必须实现套接字的应用程序。因此,为了从不同的功能发送套接字消息,我想到了将所有消息添加到一个队列中并无限地读取它并从那里发送消息的方法。

但是我的问题是,当我在阅读器中未收到相同的队列消息时。

在处理欢迎消息时,请提供任何帮助或更好的主意。

我的代码是这样的:-

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()

Singleton的实现如下:-

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)

我也尝试在其他线程中阅读,但没有用

感谢您的帮助。 :)

0 个答案:

没有答案