Skip to main content

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.

Latest PyPI Version CircleCI Test Status Code Coverage Python Version Support

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


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.0.tar.gz (12.4 kB view hashes)

Uploaded Source

Built Distribution

gcloud_rest-1.5.0-py2.py3-none-any.whl (20.2 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page