RESTful Python Client for Google Cloud
Project description
This project is a collection of Google Cloud client libraries for the REST-only APIs; its raison d’etre is to implement a simple CloudTasks API as well as a more abstract TaskManager.
Installation
$ pip install --upgrade gcloud-rest
Usage
This project currently exposes interfaces to CloudTasks, KMS, and Storage.
Storage (see bucket.py):
from gcloud.rest.storage import Bucket
bk = Bucket('my-project', 'bucket-name')
# list all objects
objects_in_bucket = bk.list_objects()
# list objects with prefix
objects_in_bucket = bk.list_objects(prefix='in/subdir/')
object = bk.download('object-name')
object_contents = bk.download_as_string('object-name')
KMS (see client.py):
from gcloud.rest.kms import KMS
from gcloud.rest.core import encode
kms = KMS('my-project', 'my-keyring', 'my-key-name')
# encrypt
plaintext = 'the-best-animal-is-the-aardvark'
ciphertext = kms.encrypt(encode(plaintext))
# decrypt
assert kms.decode(encode(ciphertext)) == plaintext
TaskQueue (for CloudTasks, see queue.py):
from gcloud.rest.core import decode
from gcloud.rest.core import encode
from gcloud.rest.taskqueue import TaskQueue
tq = TaskQueue('my-project', 'taskqueue-name')
# create a task
payload = 'aardvarks-are-awesome'
tq.insert(encode(payload))
# list and get tasks
tasks = tq.list()
random_task = tasks.get('tasks')[42]
random_task_body = tq.get(random_task['name'])
# lease, renew, and ack/cancel/delete tasks
task_leases = tq.lease(num_tasks=3)
tasks = task_lease.get('tasks')
# assert len(tasks) <= 3
for task in tasks:
payload = decode(task['pullMessage']['payload']).decode()
# you'll need to renew the task if you take longer than
# task['scheduleTime'] to process it
tq.renew(task)
# do something with payload
if success:
tq.ack(task)
elif temporary_failure:
tq.cancel(task)
elif permanent_failure:
tq.delete(task['name'])
TaskManager (for CloudTasks, see manager.py):
from gcloud.rest.taskqueue import FailFastError
from gcloud.rest.taskqueue import TaskManager
def worker_method(payloads):
for task in payloads:
# do something with the task
if success:
yield 'anything'
elif temporary_failure:
yield Exception('insert message here')
elif permanent_failure:
yeild FailFastError('insert message here')
tm = TaskManager('my-project', 'taskqueue-name', worker_method)
tm.find_tasks_forever()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gcloud-rest-1.5.2.tar.gz
(13.2 kB
view hashes)
Built Distribution
Close
Hashes for gcloud_rest-1.5.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bbce036aff8fb708c35a342718fd78e39397a97fffb1b6e9d40ee6d76c21fa6 |
|
MD5 | 4aee1efa5e9d2fb73d706f5b5168500f |
|
BLAKE2b-256 | 1b80487edbb9cf5c0825b147deb16931d80734fe6ffaccc1078d14ee9d7944c5 |