对于那些 Google 库,我在 App Engine 上缺少哪些要求?

What requirements am I missing on App Engine for those Google libraries?

多年来,我的所有网站都在 App Engine 上运行良好,最近我收到一封电子邮件,说我使用的所有内容都已弃用。我正在将 webapp 迁移到 flask 等等

我的新服务器在本地工作(最后只有一些代码更改)但是部署的版本不工作

我在本地安装了云 SDK,在我的 PYTHONPATH 中安装了 /usr/local/google_appengine/lib/:/usr/local/google_appengine

我进口

from google.appengine.api import urlfetch
from google.appengine.api import datastore
from google.appengine.api import memcache
from google.appengine.ext import db

我错过了什么requirements.txt?我尝试添加以下内容

google-api-python-client==1.7.10
google-cloud-storage==1.6.0
googleapis-common-protos==1.6.0
google-cloud-datastore==1.8.0

但我在已部署的应用程序中仍然遇到错误:ModuleNotFound google.appengine。还有一种通用的方法可以从 google 文档代码 example/import -> 要求?谢谢

这不是一个完整的答案,而是一个好的开始:

我必须将数据库迁移到 ndb https://cloud.google.com/appengine/docs/standard/python/ndb/db_to_ndb

这似乎需要设置 iam 权限 https://console.cloud.google.com/iam-admin/iam?project=yourproject

迁移并不难,主要是用ndb替换db,更改重复的字段(代码中的查找和替换,没有数据存储更改)。 还需要改几个查询的语法,这个比较费力

关于 "deprecated apis":

from google.appengine.api import datastore 变成了 from google.cloud import datastore

而且我不得不在 requirements.txt 中使用:

google-api-python-client==1.7.10
google-cloud-ndb==0.0.1
google-cloud-storage==1.17.0
grpcio-gcp==1.17.1

有一些我没有费心迁移的东西(特别是因为我的网站没有那么多地使用它们):google oauth 和 memcache。 我刚刚删除了我的管理页面(使用 oauth),并将内存缓存替换为 cachetools.LRUCache(我使用内存缓存来对页面上的调用进行速率限制)。没有分布式缓存那么迷人但是我不想设置redis等

故事结束:它在本地工作但在我部署时仍然不工作。删除 everything 以拥有一个最小的网站后,它仍然无法正常工作(而另一个项目可以正常工作)所以我打开了 https://issuetracker.google.com/issues/138887166