¿Cómo puedo iniciar una aplicación que hace las siguientes 2 cosas?
A continuación se muestra el código a través del cual estoy lanzando el servidor fastAPI. Pero cuando trato de ejecutar un hilo, antes de la ejecución de la siguiente línea, dice que nunca se esperó la corrutina.
¿Cómo se pueden ejecutar ambos en paralelo?
Tal vez esta no sea la respuesta que buscas. Hay una biblioteca llamada celery que hace que los subprocesos múltiples sean fáciles de administrar en python.
Échale un vistazo: https://docs.celeryproject.org/en/stable/getting-started/introduction.html
import asyncio from concurrent.futures import ThreadPoolExecutor from fastapi import FastAPI import uvicorn app = FastAPI() def run(corofn, *args): loop = asyncio.new_event_loop() try: coro = corofn(*args) asyncio.set_event_loop(loop) return loop.run_until_complete(coro) finally: loop.close() async def sleep_forever(): await asyncio.sleep(1000) # async def main(): loop = asyncio.get_event_loop() executor = ThreadPoolExecutor(max_workers=2) futures = [loop.run_in_executor(executor, run, sleep_forever), loop.run_in_executor(executor, run, uvicorn.run, app)] print(await asyncio.gather(*futures)) if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main())Nota: Esto puede dificultar el rendimiento de FastAPI. Un mejor enfoque sería usar una tarea de apio