I would like to retrieve a list of events stored in a Firestore collection in Python. I want to retrieve only future events (but I also want to keep past events up to 2 hours). I also want to listen on the collection in case of changes on the future schedule. The problem I'm facing is that when I run my script and my on_snapshot, the time with which I compare the “end” fields of my events is equal to the time when I ran the script. The datetime doesn't update itself. MAX_EVENTS_SHOWN = 4 def on_events(doc_snapshot, changes, read_time): global next_sessions_shown, next_sessions try: next_sessions_shown.clear() next_sessions.clear() # on init and on change, same for loop is used all_docs = list(doc_snapshot) + [change.document for change in changes] # init events on screen for index, doc in enumerate(all_docs): data = doc.to_dict() # only show 4 future events if index <= MAX_EVENTS_SHOWN - 1: next_sessions_shown.append(doc.id) next_sessions.append(doc.id) except Exception as error: print_now(f"Error in on_events function: {error}") if __name__ == '__main__': get_all_upcoming_events_fs_doc().on_snapshot(on_events) _FS_CRM_ROOT = 'v3' _FS_EVENTS = _FS_CRM_ROOT + '/events' def get_all_upcoming_events_fs_doc(): utc_plus_1 = timezone(timedelta(hours=1)) # convert to UTC+1 (current local here) now = datetime.utcnow().replace(tzinfo=timezone.utc).astimezone(utc_plus_1) # 2H hours ago from now two_hours_ago = now - timedelta(hours=2) return db.collection(_FS_EVENTS).order_by("end").where(filter=FieldFilter("end", ">=", two_hours_ago)) I've already tried resetting the listener every minute with a thread, without success. I got an error message like: "Background thread did not exit". Thank you in advance. Continue reading...