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

Python 3.x 如何在本地模拟python3应用程序的应用程序引擎环境,python-3.x,google-app-engine,google-cloud-datastore,Python 3.x,Google App Engine,Google Cloud Datastore,我正在创建一个微服务,它应该运行在Google App Engine的python 3标准环境中。我想在模拟的谷歌应用程序引擎环境中运行它。在python2标准环境中,您可以执行以下操作: dev_appserver.py [PATH_TO_YOUR_APP] 但是python不支持这一点,我也没有在文档中找到它和它的等价物,我需要它来使用数据存储在本地测试我的应用程序。dev_appserver.py仍然可以在GAE python 3运行时使用,但不推荐使用,因为它与他们现在使用的惯用沙盒背

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

dev_appserver.py [PATH_TO_YOUR_APP]

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

dev_appserver.py
仍然可以在GAE python 3运行时使用,但不推荐使用,因为它与他们现在使用的惯用沙盒背道而驰。为了让它发挥作用,在你习惯的基础上还有一些额外的步骤。 首先,在终端
云beta模拟器数据存储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
中的数据存储查看器正确连接到数据存储模拟器):

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

最后,打开第二个终端并使用以下命令运行数据存储仿真程序:

$ gcloud beta emulators datastore start

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

还没有尝试过,但我有一个问题。如果不建议使用dev_appserver方式,那么本地使用数据存储的官方方式是什么?现在,您应该使用virtualenv之类的工具隔离您的应用程序,并仅使用google云库访问其他google服务,如数据存储。如果您是本地用户,可以模拟其中一些服务。请记住,Python 3上不支持所有应用程序引擎API库,例如ndb。看看这篇文章。我还写了一系列关于迁移到Python3运行时的经验的文章,请随时查看,至少在短期内是这样,不使用带有
--support\u datastore\u emulator=False
标志的数据存储仿真器要容易得多,这是我迄今为止阅读的关于使用数据存储仿真器的最好的文档。。。谢谢。。。你救了我一天!可能重复的
$ 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