Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Heroku上的Flask Firebase应用程序未获得环境变量_Python_Firebase_Heroku_Flask_Environment Variables - Fatal编程技术网

Python Heroku上的Flask Firebase应用程序未获得环境变量

Python Heroku上的Flask Firebase应用程序未获得环境变量,python,firebase,heroku,flask,environment-variables,Python,Firebase,Heroku,Flask,Environment Variables,我在制作使用Firebase运行的烧瓶应用程序时遇到问题。 看起来Firebase凭据api即使在打印环境变量之后也不接受它们 以下是应用程序代码: #!/usr/bin/env python3 """ PixelCode PDF generation application""" from io import BytesIO from os import environ from flask import Flask, render

我在制作使用Firebase运行的烧瓶应用程序时遇到问题。 看起来Firebase凭据api即使在打印环境变量之后也不接受它们

以下是应用程序代码:

#!/usr/bin/env python3
""" PixelCode PDF generation application"""

from io import BytesIO
from os import environ
from flask import Flask, render_template_string, send_file, abort, jsonify
from flask_cors import CORS
from dotenv import load_dotenv
from weasyprint import HTML, CSS
import firebase_admin
from firebase_admin import firestore, credentials

load_dotenv()

APP = Flask(__name__)
CORS(APP)

ENV_KEYS = {
    "type": "service_account",
    "private_key_id": environ["FIREBASE_PRIVATE_KEY_ID"],
    "private_key": environ["FIREBASE_PRIVATE_KEY"],
    "client_email": environ["FIREBASE_CLIENT_EMAIL"],
    "client_id": environ["FIREBASE_CLIENT_ID"],
    "token_uri": environ["FIREBASE_TOKEN_URI"],
    "project_id": environ["FIREBASE_PROJECT_ID"],
}

print("ENV KEYS:", ENV_KEYS)

CREDENTIALS = credentials.Certificate(ENV_KEYS)

firebase_admin.initialize_app(
    CREDENTIALS, {'databaseURL': environ["FIREBASE_DATABASE_URL"]}
)

DB = firestore.client()

# Trimmed for brevity...

@APP.route('/', methods=["GET"])
def get_home():
    return render_template_string("<h2>PixelCode GoDocu Services</h2>")


if __name__ == '__main__':
    # This is used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app. This
    # can be configured by adding an `entrypoint` to app.yaml.
    # Flask's development server will automatically serve static files in
    # the "static" directory. See:
    # http://flask.pocoo.org/docs/1.0/quickstart/#static-files. Once deployed,
    # App Engine itself will serve those files as configured in app.yaml.
    APP.run(host='0.0.0.0', port=environ.get('PORT', 8080), debug=True)

#/usr/bin/env蟒蛇3
“”“像素代码PDF生成应用程序”“”
从io导入字节io
从操作系统导入环境
从flask导入flask,呈现模板字符串,发送文件,中止,jsonify
从LASKU cors进口cors
从dotenv导入加载\u dotenv
从weasyprint导入HTML、CSS
导入firebase_管理员
从firebase_管理员导入firestore,凭据
加载_dotenv()
APP=烧瓶(名称)
CORS(应用程序)
环境密钥={
“类型”:“服务账户”,
“私钥id”:环境[“FIREBASE私钥id”],
“私钥”:环境[“FIREBASE私钥”],
“客户电子邮件”:环境[“FIREBASE客户电子邮件”],
“客户id”:环境[“FIREBASE客户id”],
“token_uri”:环境[“FIREBASE_token_uri”],
“项目id”:环境[“FIREBASE项目id”],
}
打印(“环境密钥:”,环境密钥)
凭据=凭据。证书(环境密钥)
firebase_admin.initialize_应用程序(
凭据,{'databaseURL':环境[“FIREBASE_DATABASE_URL”]}
)
DB=firestore.client()
#为简洁起见。。。
@APP.route('/',methods=[“GET”])
def get_home():
返回渲染模板字符串(“像素代码GoDocu服务”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#这仅在本地运行时使用。部署到Google应用程序时
#引擎,一个Web服务器进程(如Gunicorn)将为应用程序提供服务。这
#可通过向app.yaml添加“入口点”进行配置。
#Flask的开发服务器将自动为中的静态文件提供服务
#“静态”目录。见:
# http://flask.pocoo.org/docs/1.0/quickstart/#static-档案。一旦部署,
#App Engine本身将按照App.yaml中的配置提供这些文件。
APP.run(host='0.0.0.0',port=environ.get('port',8080),debug=True)
在dev/local环境(我的pc)上,该应用程序使用.env文件运行良好。 我也在heroku上设置了环境变量

部署应用程序时,print语句会很好地打印所有环境变量。 之后,应用程序崩溃,出现以下错误:

2019-12-04T14:11:33.349817+00:00应用程序[web.1]:[2019-12-04 14:11:33+0000][11][错误]工作进程中出现异常

2019-12-04T14:11:33.349821+00:00应用程序[web.1]:回溯(最近一次通话):

2019-12-04T14:11:33.349824+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/firebase_admin/credentials.py”,第97行,在init

2019-12-04T14:11:33.349826+00:00应用程序[web.1]:json_数据,作用域=_作用域)

2019-12-04T14:11:33.349829+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/google/oauth2/service\u account.py”,第193行,在from\u service\u account\u info中

2019-12-04T14:11:33.349832+00:00应用程序[web.1]:信息,要求=['client\u email','token\u uri']

2019-12-04T14:11:33.349834+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/google/auth/_service_account_info.py”,第54行,from dict

2019-12-04T14:11:33.349836+00:00应用程序[web.1]:签名者=密码.RSASigner.来自服务帐户信息(数据)

2019-12-04T14:11:33.349838+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/google/auth/crypt/base.py”,第115行,在from\u service\u account\u info中

2019-12-04T14:11:33.349840+00:00应用程序[web.1]:info.get(_JSON_FILE_PRIVATE_KEY_ID))

2019-12-04T14:11:33.349842+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/google/auth/crypt/_python_rsa.py”,第174行,从字符串开始

2019-12-04T14:11:33.349844+00:00应用程序[web.1]:raise VALUE ERROR('无法检测到任何键')

2019-12-04T14:11:33.349847+00:00应用程序[web.1]:值错误:无法检测到任何键

2019-12-04T14:11:33.349849+00:00应用程序[网站1]:

2019-12-04T14:11:33.349851+00:00 app[web.1]:在处理上述异常时,发生了另一个异常:

2019-12-04T14:11:33.349858+00:00应用程序[web.1]:

2019-12-04T14:11:33.349860+00:00应用程序[web.1]:回溯(最近一次通话):

2019-12-04T14:11:33.349862+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/arbiter.py”,第583行,在spawn_worker中

2019-12-04T14:11:33.349864+00:00应用程序[web.1]:worker.init_进程()

2019-12-04T14:11:33.349866+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/workers/base.py”,第129行,在初始化过程中

2019-12-04T14:11:33.349868+00:00应用程序[web.1]:自加载

2019-12-04T14:11:33.349871+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/workers/base.py”,第138行,在load\u wsgi中

2019-12-04T14:11:33.349873+00:00应用程序[web.1]:self.wsgi=self.app.wsgi()

2019-12-04T14:11:33.349875+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/base.py”,wsgi第67行

2019-12-04T14:11:33.349877+00:00应用程序[web.1]:self.callable=self.load()

2019-12-04T14:11:33.349879+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第52行,已加载

2019-12-04T14:11:33.349881+00:00应用程序[web.1]:返回自加载

2019-12-04T14:11:33.349883+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第41行,在load_wsgiapp中

2019-12-04T14:11:33.349885+00:00应用程序[web.1]:返回util.import\u应用程序(self.app\u uri)

2019-12-04T14:11:33.349887+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/util.py”,第350行,在导入应用程序中

2019-12-04T14:11:33.349889+00:00应用程序[web.1]:导入(模块)

2019-12-04T14:11:33.349891+00:00应用程序[web.1]:文件“/app/app.py”,第30行,在

2019-12-04T14:11:33.349893+00:00应用程序[web.1]:凭证=凭证。证书(ENV)
ENV_KEYS = {
"type": "service_account",
"private_key_id": environ["FIREBASE_PRIVATE_KEY_ID"],
"private_key": environ["FIREBASE_PRIVATE_KEY"].replace("\\n", "\n"),
"client_email": environ["FIREBASE_CLIENT_EMAIL"],
"client_id": environ["FIREBASE_CLIENT_ID"],
"token_uri": environ["FIREBASE_TOKEN_URI"],
"project_id": environ["FIREBASE_PROJECT_ID"],
}