我有这个问题,部分与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库进行流式传输
答案 0 :(得分:0)
如何将timestamp
值添加到邮件数据中。然后,当添加消息时,您可以使用timestamp
阅读消息,并使用10 seconds delayed call
将timestamp
设置为另一个功能,如果消息仍然存在,则会检查Firebase数据库未读。
答案 1 :(得分:0)
当您致电stream()
时,您正在使用的库会产生一个Python线程:https://github.com/thisbejim/Pyrebase/blob/master/pyrebase/pyrebase.py#L288
该线程然后调用您的回调。从你的问题来看,你的主要线程在调用stream()
之后做了什么并不清楚,但基本上你可以做的是设置一个定时器,在流线程中收到每条消息10秒后唤醒你的主线程,或者只需每10秒在主线程中轮询一次。