Skip to main content

Backend.AI API Client Library

Project description

PyPI version Python Versions Build Status (Linux) Build Status (Windows) Code Coverage

The official API client library for Backend.AI

Usage

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

export BACKEND_ACCESS_KEY=...
export BACKEND_SECRET_KEY=...

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

Command-line Interface

Use ai.backend.client.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 ai.backend.client.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 ai.backend.client.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 c-example
Cloning into 'c-example'...
Unpacking objects: 100% (5/5), done.
$ cd c-example
$ python -m ai.backend.client.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

To use API development tools such as GraphiQL for the admin API, run an insecure local API proxy. This will attach all the necessary authorization headers to your vanilla HTTP API requests.

$ python -m ai.backend.client.cli proxy
∙ Starting an insecure API proxy at http://localhost:8084

Synchronous API

from ai.backend.client 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 ai.backend.client.asyncio 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


Release history Release notifications | RSS feed

Download files

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

Source Distribution

backend.ai-client-1.0.0.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

backend.ai_client-1.0.0-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file backend.ai-client-1.0.0.tar.gz.

File metadata

File hashes

Hashes for backend.ai-client-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f3e520d8d38c663521bc0b66f5f1b7910c23c26a053bdb7261201bf0e9620e22
MD5 338ce144a150c14c6c464b620d871b32
BLAKE2b-256 abe9a9b4e4faa6c8cc8119011bb8183f54c9f0d603ce75e2baf31c4bf47f3260

See more details on using hashes here.

Provenance

File details

Details for the file backend.ai_client-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for backend.ai_client-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 deb4d58e4c56a7f1ce12a4c09d97ddb09748792f9c57792abecda488b40e5a53
MD5 960f44649a4307e5a3dec4fe1aebdaf2
BLAKE2b-256 a938ecd4470d58d6262f0446e68721125353c8fe049e3f01a792813d558110b8

See more details on using hashes here.

Provenance

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