如何在本地模拟python3应用程序的App Engine环境

时间:2019-02-12 18:59:53

标签: python-3.x google-app-engine google-cloud-datastore

我正在创建一个应在Google App Engine的python 3标准环境下运行的微服务。我想在模拟的Google App Engine环境中运行它。在python2标准环境中,您可以执行以下操作:

dev_appserver.py [PATH_TO_YOUR_APP]

但是python不支持,并且我在文档中没有找到它和它等效的东西,我需要它来使用数据存储在本地测试我的应用。

1 个答案:

答案 0 :(得分:2)

dev_appserver.py在GAE Python 3运行时中仍然可用,但是不建议这样做,因为它与他们现在想要的惯用沙箱不符。为了使其正常工作,您需要采取一些额外的步骤。 首先,在终端cloud beta emulators datastore env-init中运行以获取项目的数据存储模拟器环境变量。如果所有内容均为默认设置,则它们应如下所示:

    DATASTORE_DATASET=your-project-name
    DATASTORE_EMULATOR_HOST=localhost:8081
    DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore
    DATASTORE_HOST=http://localhost:8081
    DATASTORE_PROJECT_ID=your-project-id

现在将此变量应用于终端,您将使用以下命令运行dev_appserver.py(这将使dev_appserver.py中的数据存储查看器正确连接到数据存储模拟器):

$ $(gcloud beta emulators datastore env-init)

现在,您需要使用以下参数结构将此变量传递到dev_appserver.py内的python venv中(这将使您应用的Google云库正确连接到数据存储模拟器):

$ dev_appserver.py \
--application=your-project-name \
--env_var DATASTORE_DATASET=your-project-name \
--env_var DATASTORE_EMULATOR_HOST=localhost:8081 \
--env_var DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore \
--env_var DATASTORE_HOST=http://localhost:8081 \
--env_var DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore \
  [PATH_TO_YOUR_APP]

最后,打开第二个终端并使用以下命令运行数据存储模拟器:

$ gcloud beta emulators datastore start

您应该运行所有内容。请注意,我假设您的项目已针对Python 3环境正确设置(新的app.yaml结构和requirements.txt文件的存在)