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

How to simulate app engine environment for a python3 application locally

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

dev_appserver.py [PATH_TO_YOUR_APP]

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

dev_appserver.py 在 GAE Python 3 运行-time 中仍然可用,但不推荐这样做,因为它违背了他们现在正在使用的惯用沙箱。为使其正常工作,需要执行一些您习惯的额外步骤。 首先,在终端 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

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