Skip to content

Commit 441f65b

Browse files
authored
feat(py/core/reflection): quit handler (#2414)
1 parent c53e0a9 commit 441f65b

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

py/packages/genkit/src/genkit/core/reflection.py

+18-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from genkit.web.requests import (
3434
is_streaming_requested,
3535
)
36+
from genkit.web.servers.signals import terminate_all_servers
3637
from genkit.web.typing import (
3738
Application,
3839
LifespanHandler,
@@ -249,6 +250,19 @@ async def health_check(request: Request) -> JSONResponse:
249250
"""
250251
return JSONResponse(content={'status': 'OK'})
251252

253+
async def terminate(request: Request) -> JSONResponse:
254+
"""Handle the quit endpoint.
255+
256+
Args:
257+
request: The Starlette request object.
258+
259+
Returns:
260+
An empty JSON response with status code 200.
261+
"""
262+
await logger.ainfo('Shutting down servers...')
263+
terminate_all_servers()
264+
return JSONResponse(content={'status': 'OK'})
265+
252266
async def list_actions(request: Request) -> JSONResponse:
253267
"""Handle the request for listing available actions.
254268
@@ -327,7 +341,8 @@ async def run_streaming_action(
327341
version: The Genkit version header value.
328342
329343
Returns:
330-
A StreamingResponse with JSON chunks or JSONResponse with error.
344+
A StreamingResponse with JSON chunks containing result or error
345+
events.
331346
"""
332347

333348
async def sse_generator() -> AsyncGenerator[str, None]:
@@ -410,9 +425,10 @@ async def run_standard_action(
410425
return Starlette(
411426
routes=[
412427
Route('/api/__health', health_check, methods=['GET']),
428+
Route('/api/__quitquitquit', terminate, methods=['POST']),
413429
Route('/api/actions', list_actions, methods=['GET']),
414-
Route('/api/runAction', run_action, methods=['POST']),
415430
Route('/api/notify', handle_notify, methods=['POST']),
431+
Route('/api/runAction', run_action, methods=['POST']),
416432
],
417433
middleware=[
418434
Middleware(

0 commit comments

Comments
 (0)