Я пытаюсь получить доступ к 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()
Любая помощь будет принята с благодарностью!