通过Cloud Tasks和Cloud Datastore进行本地开发,以及使用Python3的GAE

时间:2018-12-18 03:57:08

标签: google-app-engine google-cloud-platform google-cloud-datastore

上下文:-我们正在将 GAE Python3 结合使用,因此GAE API包不可用,因此我们正在使用 google -cloud- *软件包用于与GAE服务进行交互

google-cloud-tasks 用于推送队列, google-cloud-datastore 用于数据存储。

问题:-由于google-cloud- *软件包直接作用于生产服务,因此无法在开发环境中测试事物。
如果我使用google-cloud-tasks推送任务,它将推送到生产队列中,同样,如果我从开发环境中创建或更新实体,它将更新生产数据存储区中的实体。

早期在本地系统中使用GAE API程序包时,它曾经具有用于开发目的的本地云任务和数据存储。

我认为这是一个大而非常常见的问题,我想知道是否还有其他人也遇到了此类问题并找到了解决方案。

3 个答案:

答案 0 :(得分:3)

对于Cloud Datastore,您可以按照https://cloud.google.com/datastore/docs/tools/datastore-emulator上的说明使用本地模拟器而不是生产Datastore数据库。

https://cloud.google.com/tasks/docs/migrating中所述,仿真器当前不支持Cloud Tasks。

答案 1 :(得分:0)

此Google Cloud Tasks本地仿真器为我工作。

pip install gcloud-tasks-emulator
gcloud-tasks-emulator start --port=9090

//注意-:默认情况下,gcloud-tasks-emulator命令 在全局切换安装目录中不可用。

/Users/{userName}/Library/Python/3.7/bin
./gcloud-tasks-emulator start --port=9090

现在,我们可以添加代码更改以支持本地环境中的云任务。

import grpc
from google.cloud.tasks_v2 import CloudTasksClient
from google.cloud.tasks_v2.gapic.transports.cloud_tasks_grpc_transport import C 
loudTasksGrpcTransport

client = CloudTasksClient(
 transport=CloudTasksGrpcTransport
 (channel=grpc.insecure_channel("127.0.0.1:9090"))
)

访问此链接以获取完整说明https://pypi.org/project/gcloud-tasks-emulator/

答案 2 :(得分:0)

我为Python开发构建了in-process emulator

另请参阅一些在本地主机中的单独进程中运行的模拟器:上面答案中提到的Potato London的gcloud-tasks-emulator和Aert van de Hulsbeek的cloud-tasks-emulator