Skip to main content

reticle

Testing Status codecov Documentation Build Status PyPi Release Python Versions MyPy Checked Code style: black

Python 3.6+ library for submitting to AWS Batch interactively.

 pip install reticle

Features:

  • Submit Batch jobs

Read the documentation at: reticle.readthedocs.io

End-to-end Example

The principle object for deploying jobs to AWS Batch is the Batch job definition. Every Batch job definition has a name, parameters, and some form of optional parameter validation.

from reticle.aws.batch import JobDefinition
from reticle.aws.s3 import S3Uri

class DemoJobDefinition(JobDefinition):
    """A Batch job definition for demonstrating our API.

    Args:
        input_object: The S3 URI to the input object.

    """
    def __init__(self, input_object: S3Uri):
        self.input_object = input_object

    @property
    def name(self) -> str:
        """Return the job definition name."""
        return 'demo-job'

    def validate(self) -> None:
        """Validate this parameterized job definition."""
        if not self.input_object.object_exists():
            raise f'S3 object does not exist: {self.input_object}'

We can now wrap the parameterized job definition in a Batch job and set a specific revision.

from reticle.aws.batch import BatchJob

definition = DemoJobDefinition(input_object='s3://bucket/object')
definition.at_revision('6')

job = BatchJob(definition)

Submitting this Batch job is easy, and introspection can be performed immediately:

response = job.submit(queue='prod')

When the job is in a RUNNING state we can access the job's Cloudwatch logs:

for log_event in job.log_stream_events():
    print(log_event)
"""
LogEvent(timestamp="1543809952329", message="You have started up this demo job", ingestion_time="1543809957080")
LogEvent(timestamp="1543809955437", message="Configuration, we are loading from...", ingestion_time="1543809957080")
LogEvent(timestamp="1543809955437", message="Defaulting to approximate values", ingestion_time="1543809957080")
LogEvent(timestamp="1543809955437", message="Setting up logger, nothing to see here", ingestion_time="1543809957080")
"""

And if we must, we can cancel the job as long as we provide a reason:

job.terminate(reason='I was just testing!')

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reticle-0.1.0.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file reticle-0.1.0.tar.gz.

File metadata

  • Download URL: reticle-0.1.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5

File hashes

Hashes for reticle-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3936d1d75b19b77d9ea66ebd9609ca04bbed76f4866cbd4ff98420faaa60787c
MD5 8c3bf840734af645e97a09c384baecd8
BLAKE2b-256 a5b17e4935dcfd1bf5707203e074e52ef31d248744e2aa9cabc74984c18c9779

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page