Python 3.x 如何在本地模拟python3应用程序的应用程序引擎环境
我正在创建一个微服务,它应该运行在Google App Engine的python 3标准环境中。我想在模拟的谷歌应用程序引擎环境中运行它。在python2标准环境中,您可以执行以下操作: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运行时使用,但不推荐使用,因为它与他们现在使用的惯用沙盒背
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 insidedev_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