Skip to main content

omg.py

A micro-framework for the excellent Open Microservices Guide, for suppportive code written in Python 3.6+.

Note: this is pre-release software, and is subject to improvement. Contributions are welcome! This framework is being developed for other languages, as well. If you'd like to help, let us know!

Intended / Example Usage

$ cat service.py
import omg
from uuid import uuid4

service = omg.Microservice(name='uuid')

@service.register()
def new(prefix: str) -> str:
    """Generates a UUID, with a given prefix."""
    return f'{prefix}{uuid4().hex}'

if __name__ == '__main__':
    service.serve(ensure=True)

register takes some optional arguments: name and path. You can also call service.add(f=new), instead.

If not available on disk, the required Dockerfile and microservice.yml files will automatically be generated, for your application:

$ cat microservice.yml
actions:
  new:
    help: Generates a UUID, with a given prefix.
    arguments:
      prefix:
        in: query
        required: true
        type: string
    http:
      method: get
      path: /new
      port: 8080
    output:
      type: string
lifecycle:
  startup:
    command:
    - python3
    - /app/service.py
omg: 1
$ cat Dockerfile
FROM kennethreitz/pipenv
COPY . /app
CMD ["python3", "service.py"]

Now, run your microservice!

$ python service.py
2019-05-09 14:45:39,342 - micro - DEBUG - Initiating 'uuid' service.
2019-05-09 14:45:39,344 - micro - DEBUG - Registering Flask endpoint: '/new'
2019-05-09 14:45:39,344 - micro - DEBUG - Dockerfile './Dockerfile' already exists!
2019-05-09 14:45:39,345 - micro - DEBUG - Microservice Manifest './microservice.yml' already exists!
2019-05-09 14:45:39,346 - micro - INFO - Serving on: '*:8080'

This will spawn a Flask application (using the production-ready waitress web server), preconfigured to serve the masses!

Or, use the omg-cli:

$ omg run new -a prefix='user-'

Installation

$ pip install omg.py

P.S. Do provide feedback, if you desire! :)

✨ 🍰 ✨

Release files for omg.py 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omg.py 0.3.3
File Size Uploaded
omg.py-0.3.3.tar.gz 6.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omg.py 0.3.3
File Interpreter ABI Platform
omg.py-0.3.3-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 15.0 kB

Release files / omg.py-0.3.3.tar.gz

Download URL omg.py-0.3.3.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2f5d7e6a6d4dded47ca021033353f41ae2cfb49c089f57505eb8fbaa2db6d545
BLAKE2b-256 checksum
How to use checksums
f6b3117c13acc0452b676e31ee30a562247290afa289459a0aae356be8b47c13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Release files / omg.py-0.3.3-py2.py3-none-any.whl

Download URL omg.py-0.3.3-py2.py3-none-any.whl
Size 8.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e424f58af7333b7fa62c2c9e22a922def75dbc54df2a7e04cde28ec8e82b258d
BLAKE2b-256 checksum
How to use checksums
42933f3a2082a90fd8c9394c9cf99c16d320dda92be733abdcfebe9ece58275f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page