rpa
This commit is contained in:
parent
b13cb72219
commit
24cd449827
|
|
@ -1,11 +1,17 @@
|
||||||
# my_job_queue_endpoint.py
|
# my_job_queue_endpoint.py
|
||||||
import fastapi
|
import fastapi
|
||||||
from typing import List, Optional,Any
|
from typing import List, Optional, Any
|
||||||
import modal
|
import modal
|
||||||
from .rpa_comm import LiveStreamProductWatchRequest,LiveStreamResult,ProductSession
|
from .rpa_comm import LiveStreamProductWatchRequest, LiveStreamResult, ProductSession
|
||||||
|
from scalar_fastapi import get_scalar_api_reference
|
||||||
|
|
||||||
|
image = (modal.Image.debian_slim()
|
||||||
image = modal.Image.debian_slim().pip_install("fastapi[standard]")
|
.pip_install([
|
||||||
|
"fastapi[standard]",
|
||||||
|
"pydantic",
|
||||||
|
"scalar-fastapi>=1.0.3",
|
||||||
|
])
|
||||||
|
.pip_install())
|
||||||
app = modal.App("fastapi_rpa", image=image)
|
app = modal.App("fastapi_rpa", image=image)
|
||||||
|
|
||||||
############################ Modal app set############################
|
############################ Modal app set############################
|
||||||
|
|
@ -19,16 +25,24 @@ def fastapi_app():
|
||||||
return web_app
|
return web_app
|
||||||
|
|
||||||
|
|
||||||
@web_app.post("/submit")
|
@web_app.get("/scalar", include_in_schema=False)
|
||||||
async def submit_job_endpoint(data:LiveStreamProductWatchRequest):
|
async def scalar_html():
|
||||||
|
return get_scalar_api_reference(
|
||||||
|
openapi_url=web_app.openapi_url,
|
||||||
|
title=web_app.title,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@web_app.post("/live_watch/submit")
|
||||||
|
async def submit_job_endpoint(data: LiveStreamProductWatchRequest) -> Optional[Any]:
|
||||||
process_job = modal.Function.from_name("rpa", "rpa_run")
|
process_job = modal.Function.from_name("rpa", "rpa_run")
|
||||||
|
|
||||||
call = process_job.spawn(data)
|
call = process_job.spawn(data)
|
||||||
return {"call_id": call.object_id}
|
return {"call_id": call.object_id}
|
||||||
|
|
||||||
|
|
||||||
@web_app.get("/result/{call_id}")
|
@web_app.get("/live_watch/result/{call_id}")
|
||||||
async def get_job_result_endpoint(call_id: str):
|
async def get_job_result_endpoint(call_id: str) -> Optional[LiveStreamResult]:
|
||||||
function_call = modal.FunctionCall.from_id(call_id)
|
function_call = modal.FunctionCall.from_id(call_id)
|
||||||
try:
|
try:
|
||||||
result = function_call.get(timeout=0)
|
result = function_call.get(timeout=0)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue