Firebase Firestore get () снимок зависает при втором запросе - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь получить доступ к Firestore из развертывания AWS Elastic Beanstalk. Приложение EB написано с использованием Flask на Python, и все работает правильно локально. Но когда я пытаюсь выполнить развертывание в EB, только первый запрос к базе данных завершается успешно, второй останавливает мое приложение во время вызова .get().

Я не уверен, является ли это разрешением на EB, проблемой Firestore или чем-то другим! Поскольку исключение не выдается, я даже не могу отклонить запрос и двигаться дальше.

Я получаю в логах следующее:

[Tue Jun 26 11:29:16.964989 2018] [core:error] [pid 3914] [client 172.31.17.165:22711] Script timed out before returning headers: application.py

... но это потому, что время ожидания сценария истекло из-за того, что вызов .get() никогда не возвращается.

Вот мой полный код для этого тестового приложения:

import os

from flask import Flask, url_for, redirect, render_template
import mimetypes
import time

import google
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

print("=====================================================")
print("initializing app")
cred = credentials.Certificate("/my/actual/path/to/credentials/is/here.json")
firebase_admin.initialize_app(cred)
print("done.")

print("initializing firestore")
db = firestore.client()
print("done.")

print("initializing flask")
application = Flask(__name__)
print("done.")

@application.route('/doc/<docId>')
def doc(docId):
    docId = docId.lower()

    documents_ref = db.collection(u'documents')
    doc_ref = documents_ref.document(docId)

    print("getting doc")
    doc = None
    try:
        doc = doc_ref.get()
    except google.cloud.exceptions.NotFound:
        print("not found.")
        return render_template('doc.html', message="This document no longer exists ?.")
    print("done.")

    # Here is where I'd normally use the DB snapshot data, but omitted for the question
    creatorStr = "Someone"
    timeStr = "a time"

    docMessage = creatorStr + " sent you a document dated " + timeStr + "."

    return render_template('doc.html', docMessage=docMessage)

if __name__ == "__main__":
    # application.debug = True
    application.run()

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...