上下文:-我们正在将 GAE 与 Python3 结合使用,因此GAE API包不可用,因此我们正在使用 google -cloud- *软件包用于与GAE服务进行交互
即 google-cloud-tasks 用于推送队列, google-cloud-datastore 用于数据存储。
问题:-由于google-cloud- *软件包直接作用于生产服务,因此无法在开发环境中测试事物。
即如果我使用google-cloud-tasks推送任务,它将推送到生产队列中,同样,如果我从开发环境中创建或更新实体,它将更新生产数据存储区中的实体。
早期在本地系统中使用GAE API程序包时,它曾经具有用于开发目的的本地云任务和数据存储。
我认为这是一个大而非常常见的问题,我想知道是否还有其他人也遇到了此类问题并找到了解决方案。
答案 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。