如何在本地模拟 python3 应用程序的应用程序引擎环境

Kre*_*der 2 google-app-engine python-3.x google-cloud-datastore

我正在创建一个应该在 Google App Engine 的 python 3 标准环境上运行的微服务。我想在模拟的 Google 应用引擎环境中运行它。在 python2 标准环境中你可以这样做:

dev_appserver.py [PATH_TO_YOUR_APP]
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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
Run Code Online (Sandbox Code Playgroud)

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

$ $(gcloud beta emulators datastore env-init)
Run Code Online (Sandbox Code Playgroud)

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

$ 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]
Run Code Online (Sandbox Code Playgroud)

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

$ gcloud beta emulators datastore start
Run Code Online (Sandbox Code Playgroud)

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