谷歌云的restful python客户端

gcloud-rest的Python项目详细描述


这个项目是google云客户端库的一个集合,仅用于其余部分 api;它的reason d'etre是实现一个简单的CloudTasks API以及 更抽象的任务管理器。这…现在和谷歌 不推荐使用pullqueue样式的任务,但是这个库将继续是oss to 为任何寻求并发友好方法的人提供支持 与Python2和3中的GCP API交互。

如果不需要支持Python2,则可能需要使用gcloud-aio, 它支持所有相同的api(等等!)另外还包括 对asyncio的本机支持。

Latest PyPI VersionCircleCI Test StatusCode CoveragePython Version Support

一些客户端库位于不同的包中:

注意,所有模块最终都将单独发布,并且 gcloud-rest包将被弃用。

安装

$ pip install --upgrade gcloud-rest

(或者,对于独立发布的软件包):

$ pip install --upgrade gcloud-rest-datastore

用法

此项目当前向CloudTasksDatastore公开接口, KMS,和Storage

对于单独打包的库,可以找到使用示例 在相应的自述文件中。

对于其他人,继续阅读。

储存(见bucket.py):

fromgcloud.rest.storageimportBucketbk=Bucket('my-project','bucket-name')# list all objectsobjects_in_bucket=bk.list_objects()# list objects with prefixobjects_in_bucket=bk.list_objects(prefix='in/subdir/')object=bk.download('object-name')object_contents=bk.download_as_string('object-name')

KMS(见client.py):

fromgcloud.rest.kmsimportKMSfromgcloud.rest.coreimportencodekms=KMS('my-project','my-keyring','my-key-name')# encryptplaintext='the-best-animal-is-the-aardvark'ciphertext=kms.encrypt(encode(plaintext))# decryptassertkms.decode(encode(ciphertext))==plaintext

任务队列(有关CloudTasks,请参见queue.py):

fromgcloud.rest.coreimportdecodefromgcloud.rest.coreimportencodefromgcloud.rest.taskqueueimportTaskQueuetq=TaskQueue('my-project','taskqueue-name')# create a taskpayload='aardvarks-are-awesome'tq.insert(encode(payload))# list and get taskstasks=tq.list()random_task=tasks.get('tasks')[42]random_task_body=tq.get(random_task['name'])# lease, renew, and ack/cancel/delete taskstask_leases=tq.lease(num_tasks=3)tasks=task_lease.get('tasks')# assert len(tasks) <= 3fortaskintasks:payload=decode(task['pullMessage']['payload']).decode()# you'll need to renew the task if you take longer than# task['scheduleTime'] to process ittq.renew(task)# do something with payloadifsuccess:tq.ack(task)eliftemporary_failure:tq.cancel(task)elifpermanent_failure:tq.delete(task['name'])

任务管理器(有关CloudTasks,请参见manager.py):

fromgcloud.rest.taskqueueimportFailFastErrorfromgcloud.rest.taskqueueimportTaskManagerdefworker_method(payloads):fortaskinpayloads:# do something with the taskifsuccess:yield'anything'eliftemporary_failure:yieldException('insert message here')elifpermanent_failure:yeildFailFastError('insert message here')tm=TaskManager('my-project','taskqueue-name',worker_method)tm.find_tasks_forever()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish