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.7.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

sorna_client-0.9.7-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for sorna-client-0.9.7.tar.gz
Algorithm Hash digest
SHA256 2f59a33de6922a4a1c2588349e551c0ff8dc41e42b38ef88d5d41b3adaee2327
MD5 6d339f8ceadbcdd958afbfaf6f4562c5
BLAKE2b-256 e001db50d5278112c81dad02ff5c21f0ca140f382110d62578a4a458825a7913

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sorna_client-0.9.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b0e5b0f96eaa10928cf27bf7e33e6d637eb59d67a86ea11f64aa92e2697921f5
MD5 7ee27297ea5fe7083c8f73b8b75267bd
BLAKE2b-256 820b16e60a3a9ae29b4ab8a21004c5b656b9a732e4438ed1cd6be5d8a444611d

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