Async Usage¶
Every method on KhayaClient has an async counterpart prefixed with a:
| Sync | Async |
|---|---|
translate() |
atranslate() |
transcribe() |
atranscribe() |
synthesize() |
asynthesize() |
Basic example¶
import asyncio
import os
from khaya import KhayaClient
async def main():
async with KhayaClient(os.environ["KHAYA_API_KEY"]) as khaya:
result = await khaya.atranslate("Good morning", "en-tw")
print(result.text)
asyncio.run(main())
Use async with to ensure the underlying HTTP client is closed when done.
Running requests concurrently¶
The async API is most valuable when you have multiple independent requests — run them in parallel with asyncio.gather():
import asyncio
from khaya import KhayaClient
async def translate_batch(api_key: str, texts: list[str]) -> list[str]:
async with KhayaClient(api_key) as khaya:
tasks = [khaya.atranslate(t, "en-tw") for t in texts]
results = await asyncio.gather(*tasks)
return [r.text for r in results]
translations = asyncio.run(translate_batch(api_key, ["Hello", "Goodbye", "Thank you"]))
Mixing services¶
async def process(api_key: str, text: str, audio_path: str):
async with KhayaClient(api_key) as khaya:
translation, transcript = await asyncio.gather(
khaya.atranslate(text, "en-tw"),
khaya.atranscribe(audio_path, "tw"),
)
return translation.text, transcript.text
Error handling¶
Error handling is identical to the sync API — the same exceptions are raised:
from khaya.exceptions import AuthenticationError, APIError
async with KhayaClient(api_key) as khaya:
try:
result = await khaya.atranslate("Hello", "en-tw")
except AuthenticationError:
print("Check your API key.")
except APIError as e:
print(f"Error {e.status_code}: {e.message}")
Framework integration¶
When to use async vs sync¶
Use the async API when your application is already async (FastAPI, aiohttp, async Django, etc.) or when you need to run multiple Khaya requests concurrently.
Use the sync API for scripts, CLIs, and synchronous web frameworks (Flask, Django sync views) — it is simpler and has no additional dependencies.