mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2025-12-31 21:59:49 -06:00
* fix: filters contracts + version bumps * chore: gen * feat: implement streaming for ts * fix: v0 sdk side by side * fix: optional status on semaphore slots * fix: gen script * chore: lint + gen * chore: gen * fix: fmt * fix: revert changes * feat: handle incorrect return types * fix: worker status not assigned * fix: improve handling of other types of pydantic models * fix: handle null output case * fix: get group key * fix: info level log for non-retry * fix: export non retry at top level * fix: changelog * chore: gen * chore: gen
31 lines
766 B
Python
31 lines
766 B
Python
from typing import AsyncGenerator
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.responses import StreamingResponse
|
|
|
|
from examples.streaming.worker import stream_task
|
|
from hatchet_sdk import RunEventListener, StepRunEventType
|
|
|
|
# > FastAPI Proxy
|
|
app = FastAPI()
|
|
|
|
|
|
async def generate_stream(stream: RunEventListener) -> AsyncGenerator[str, None]:
|
|
async for chunk in stream:
|
|
if chunk.type == StepRunEventType.STEP_RUN_EVENT_TYPE_STREAM:
|
|
yield chunk.payload
|
|
|
|
|
|
@app.get("/stream")
|
|
async def stream() -> StreamingResponse:
|
|
ref = await stream_task.aio_run_no_wait()
|
|
|
|
return StreamingResponse(generate_stream(ref.stream()), media_type="text/plain")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
|
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|