Skip to main content

Sorna API Client Library

Project description

PyPI Python Versions Travis Build Status AppVeyor Build Status Code Coverage

The API client library for Sorna

Usage

You should set the access key and secret key as environment variables to use the API. Grab your keypair from cloud.sorna.io or your cluster admin.

export SORNA_ACCESS_KEY=...
export SORNA_SECRET_KEY=...

# optional (for local clusters)
export SORNA_ENDPOINT="https://my-precious-cluster/"

Command-line Interface

Use sorna.cli module with run command.

To run the code specified in the command line directly, use -c option to pass the code string.

$ python -m sorna.cli run python3 -c "print('hello world')"
∙ Client session token: d3694dda6e5a9f1e5c718e07bba291a9
✔ Kernel (ID: zuF1OzMIhFknyjUl7Apbvg) is ready.
hello world
✔ Cleaned up the kernel.

You can even run a C code on-the-fly. (Note that we put a dollar sign before the single-quoted code argument so that the shell to interpret '\n' as actual newlines.)

$ python -m sorna.cli run c -c $'#include <stdio.h>\nint main() {printf("hello world\\n");}'
∙ Client session token: abc06ee5e03fce60c51148c6d2dd6126
✔ Kernel (ID: d1YXvee-uAJTx4AKYyeksA) is ready.
hello world
✔ Cleaned up the kernel.

For larger programs, you may upload multiple files and then build & execute them. The below is a simple example to run a sample C program.

$ git clone https://gist.github.com/achimnol/df464c6a3fe05b21e9b06d5b80e986c5 sorna-c-example
Cloning into 'sorna-c-example'...
Unpacking objects: 100% (5/5), done.
$ cd sorna-c-example
$ python -m sorna.cli run c main.c mylib.c mylib.h
∙ Client session token: 1c352a572bc751a81d1f812186093c47
✔ Kernel (ID: kJ6CgWR7Tz3_v2WsDHOwLQ) is ready.
✔ Uploading done.
✔ Build finished.
myvalue is 42
your name? LABLUP
hello, LABLUP!
✔ Cleaned up the kernel.

Please refer the --help manual provided by the run command.

You may use a shortcut command lcc and lpython instead of typing the full Python module path like:

$ lcc main.c mylib.c mylib.h

Synchronous API

from sorna.kernel import Kernel

kern = Kernel.get_or_create('lua5', client_token='abc')
result = kern.execute('print("hello world")', mode='query')
print(result['console'])
kern.destroy()

You need to take care of client_token because it determines whether to reuse kernel sessions or not. Sorna cloud has a timeout so that it terminates long-idle kernel sessions, but within the timeout, any kernel creation requests with the same client_token let Sorna cloud to reuse the kernel.

Asynchronous API

import asyncio
from sorna.asyncio.kernel import AsyncKernel

async def main():
    kern = await AsyncKernel.get_or_create('lua5', client_token='abc')
    result = await kern.execute('print("hello world")', mode='query')
    print(result['console'])
    await kern.destroy()

loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(main())
finally:
    loop.close()

All the methods of AsyncKernel objects are exactly same to the synchronous version, except that they are coroutines.

Additionally, AsyncKernel offers async-only method stream_pty(). It returns a StreamPty object which allows you to access a pseudo-tty of the kernel. StreamPty works like an async-generator and provides methods to send stdin inputs as well as resize the terminal.

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

sorna-client-0.9.6.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

sorna_client-0.9.6-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file sorna-client-0.9.6.tar.gz.

File metadata

File hashes

Hashes for sorna-client-0.9.6.tar.gz
Algorithm Hash digest
SHA256 ff1d43af4a33055dda55d4bd4a35dad1b6b00629c1e58a8fac82493cfa1e0478
MD5 985c5d56340828a9c3bb67756a83ab0b
BLAKE2b-256 fe3af874cbe0aac1d0edf83d2b620ab39f41bf01075f345f5d923f17ea6cd23f

See more details on using hashes here.

File details

Details for the file sorna_client-0.9.6-py3-none-any.whl.

File metadata

File hashes

Hashes for sorna_client-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 3e47ba7f0b01c5e89adbceedd49f12146e12737a032b011d17102b0c0b84058c
MD5 1518b1abcd5548294c848ee14c6d9112
BLAKE2b-256 101cdbf5841274cb902e3cbbd6138edfaebe7e21471139902585f74f899178a7

See more details on using hashes here.

Supported by

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