Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Realtime Database Listener Crashes on Internet Disconnection

Đang mở
#791 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
firebase, python
Lĩnh vực
backend, databases

Hướng nghiên cứu

Bắt đầu với phương thức DatabaseListener.start_listener và lệnh gọi ref.listen của Firebase Realtime Database được nêu trong báo cáo. Tái hiện lỗi bằng cách ngắt Internet khi một listener đang hoạt động, và xác định Exception nào thoát khỏi phần xử lý hiện tại. Hoàn tất khi listener không bị crash và tiếp tục hoạt động sau khi kết nối được khôi phục, với coverage cho lỗi đã được báo cáo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

api: database

Description
When the internet disconnects, the Firebase Realtime Database listener crashes, even with try and except statements. The application fails to recover and reconnect the listeners, resulting in the following error:

javascript
Code kopieren
google.api_core.exceptions.RetryError: Deadline of 120.0s exceeded while calling target function, last exception: HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with url: /storage/v1/b/villaduniatest.appspot.com/o?projection=noAcl&prefix=pdfstable%2F&prettyPrint=false (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000017C6BBE79D0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
Reconnecting...
Steps to Reproduce
Start a Firebase Realtime Database listener in a Python application.
Disconnect the internet.
Observe the application crash with the above error.
Expected Behavior
The application should handle the disconnection gracefully, retrying the connection until the internet is restored, without crashing.

Actual Behavior
The application crashes immediately upon internet disconnection, and does not recover.

Environment
Firebase Admin SDK: Python
Python Version: (your Python version)
Operating System: (your OS version)
Additional Context
Here is the relevant portion of the code:

python
Code kopieren
import firebase_admin
from firebase_admin import credentials, initialize_app, db
from requests.exceptions import ConnectionError, Timeout
import time

class DatabaseListener:
def init(self, app_instance):
self.app_instance = app_instance
self.listeners = {}

def start_listener(self, path, callback):
    ref = db.reference(path, app=self.app_instance)
    while True:
        try:
            listener = ref.listen(callback)
            self.listeners[path] = listener
            print(f"Listener started for path: {path}")
            break
        except (ConnectionError, Timeout) as e:
            print(f"Connection error starting listener for {path}: {e}")
            time.sleep(5)  # Retry after a delay

def stop_listener(self, path):
    if path in self.listeners:
        listener = self.listeners[path]
        listener.close()
        del self.listeners[path]
        print(f"Listener stopped for path: {path}")

def stop_all_listeners(self):
    for path in list(self.listeners.keys()):
        self.stop_listener(path)
    print("All listeners stopped.")

Any guidance or solutions to ensure the listener can recover from network disconnections would be greatly appreciated

Ngôn ngữ chính
Python
Star
1.2k
Fork
359
Merge trung bình
3 ngày 9 giờ
Pull request đã merge (30 ngày)
3

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của firebase/firebase-admin-python

Tất cả issue của firebase/firebase-admin-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.