diff --git a/py/packages/genkit-ai/src/genkit/ai/veneer.py b/py/packages/genkit-ai/src/genkit/ai/veneer.py index 28aed060be..d206ab27f2 100644 --- a/py/packages/genkit-ai/src/genkit/ai/veneer.py +++ b/py/packages/genkit-ai/src/genkit/ai/veneer.py @@ -101,7 +101,7 @@ async def foo(...): from genkit.ai.plugin import Plugin from genkit.ai.registry import GenkitRegistry from genkit.aio import Channel -from genkit.aio.loop import create_loop +from genkit.aio.loop import create_loop, run_async from genkit.blocks.document import Document from genkit.blocks.embedding import EmbedRequest, EmbedResponse from genkit.blocks.formats import built_in_formats @@ -190,6 +190,17 @@ def join(self): if self.thread and self.loop: self.thread.join() + def run_main(self, main): + if self.loop: + + async def run(): + return await main + + run_async(self.loop, run) + else: + asyncio.run(main) + self.join() + def start_server(self, spec: server.ServerSpec, loop: asyncio.AbstractEventLoop) -> None: """Start the HTTP server for handling requests. diff --git a/py/samples/hello-google-genai/src/hello_google_genai.py b/py/samples/hello-google-genai/src/hello_google_genai.py index db85c6b391..33fcf100ea 100644 --- a/py/samples/hello-google-genai/src/hello_google_genai.py +++ b/py/samples/hello-google-genai/src/hello_google_genai.py @@ -310,9 +310,4 @@ async def main() -> None: if __name__ == '__main__': - asyncio.run(main()) - - -# prevent app from exiting when genkit is running in dev mode -# TODO: Clean this up. -ai.join() + ai.run_main(main())