2016-10-30 3 views
0

Поток, который у меня есть из библиотеки Pyrebase, кажется, имеет проблему для меня. У узла, на котором он находится, есть несколько тысяч узлов под ним, и кажется, что я не могу справиться с этим?Поток пожарной базы застревает [pyrebase]

Сначала я думал, что потоковая передача не работает, но для другого узла. Это как называется поток (открыть и закрыть его через каждые 45 минут, чтобы избежать несвежий маркер аутентификации)

def main(): 
    .... 
    FIREBASE = pyrebase.initialize_app(PYREBASE_CONFIG) 

    database = FIREBASE.database() 
    return database.child('/messages/').stream(messages_handler) 

if __name__ == '__main__': 
    while True: 
     stream = main() 
     time.sleep(60 * 45) 
     stream.close() 

Но это, кажется, застревают на этом:

2016-10-30 12:26:23,019 [INFO]: Refreshing access_token 
2016-10-30 12:26:23,800 [INFO]: Starting new HTTPS connection (1): some-database.firebaseio.com 
2016-10-30 12:26:24,311 [INFO]: Starting new HTTPS connection (1): same-database.firebaseio.com 

Это странно, поскольку он работает для другого узла, чем /messages/, и database.child('/messages/').get().val() получает его очень быстро.

Почему поток застрял на этом? Вся помощь приветствуется!

РЕДАКТИРОВАТЬ. Чтобы быть ясным, это не проблема аутентификации, поток не может обрабатывать данные из узла A (/ messages /), но он работает для узла B (/ other_node /).

ответ

1

Вы добавляете ненужные косые черты. Pyrebase source code, starting from line 222

def child(self, *args): 
     new_path = "/".join([str(arg) for arg in args]) 
     if self.path: 
      self.path += "/{}".format(new_path) 
     else: 
      if new_path.startswith("/"): 
       new_path = new_path[1:] 
      self.path = new_path 
     return self 

Как вы можете видеть, Pyrebase добавляет косую черту, так что вы должны заменить database.child('/messages/').get().val() с database.child('messages').get().val()

+0

Хотя это правда, имеющие косую черту там уже работает. Похоже, в этой строке идет медленная работа: https://github.com/thisbejim/Pyrebase/blob/master/pyrebase/pyrebase.py#L547 – dnsko

Смежные вопросы