Python Firebase未读消息流

时间:2016-04-19 13:14:34

标签: python firebase

我有这个问题,部分与firebase有关。我目前正在使用支持流的混合python firebase库。 我目前在/unread_messages/上有一个流,因此每次将未读消息放入firebase时,unread_message_handler()都会执行某些操作。

stream = FIREBASE.child('/unread_messages/').stream(unread_message_handler)

和处理程序

def unread_message_handler(stream):

    for data in stream:
        if data['path'] == '/':
            # Multi-message node
            messages = data['data'] or []
            for message_id in messages:
                if messages[message_id] is not None:
                    send_notification(message_id, messages[message_id])
        else:
            # Single-message node
            if data['data'] is not None:
               send_notification(data['path'], data['data'])

问题是:我不想在发布未读邮件时直接发送通知。我想等待10秒钟,看看该特定邮件是否仍在/unread_messages/中,如果是,请发送通知。

直接发送它很容易,它已经做了,但是我不确定如何等待10秒,因为流只在新操作上调用处理程序,而我一直想检查时间戳

修改 我正在使用this库进行流式传输

2 个答案:

答案 0 :(得分:0)

如何将timestamp值添加到邮件数据中。然后,当添加消息时,您可以使用timestamp阅读消息,并使用10 seconds delayed calltimestamp设置为另一个功能,如果消息仍然存在,则会检查Firebase数据库未读。

答案 1 :(得分:0)

当您致电stream()时,您正在使用的库会产生一个Python线程:https://github.com/thisbejim/Pyrebase/blob/master/pyrebase/pyrebase.py#L288

该线程然后调用您的回调。从你的问题来看,你的主要线程在调用stream()之后做了什么并不清楚,但基本上你可以做的是设置一个定时器,在流线程中收到每条消息10秒后唤醒你的主线程,或者只需每10秒在主线程中轮询一次。