Как запустить FastAPI / Uvicorn в Google Colab?

Я пытаюсь запустить локальное веб-приложение в Google Colab с помощью FastAPI / Uvicorn, как некоторые из примеров кода приложения Flask, которые я видел, но не могу заставить его работать. Кто-нибудь смог это сделать? Ценить это.

Установлены FastAPI и Uvicorn успешно

!pip install FastAPI -q
!pip install uvicorn -q

Пример приложения

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

Выполнить попытки

#attempt 1
if __name__ == "__main__":
    uvicorn.run("/content/fastapi_002:app", host="127.0.0.1", port=5000, log_level="info")

#attempt 2
#uvicorn main:app --reload
!uvicorn "/content/fastapi_001.ipynb:app" --reload

person md598    schedule 10.09.2020    source источник


Ответы (1)


Вы можете использовать ngrok для экспорта порта как внешнего URL-адреса. По сути, ngrok берет что-то доступное / размещенное на вашем локальном хосте и предоставляет его в Интернет с временным общедоступным URL-адресом.

Сначала установите зависимости

!pip install fastapi nest-asyncio pyngrok uvicorn

Создайте свое приложение

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=['*'],
    allow_credentials=True,
    allow_methods=['*'],
    allow_headers=['*'],
)

@app.get('/')
async def root():
    return {'hello': 'world'}

Затем запустите его.

import nest_asyncio
from pyngrok import ngrok
import uvicorn

ngrok_tunnel = ngrok.connect(8000)
print('Public URL:', ngrok_tunnel.public_url)
nest_asyncio.apply()
uvicorn.run(app, port=8000)
person Yagiz Degirmenci    schedule 10.09.2020
comment
Вау, очень впечатляюще. Есть ли какие-то ограничения, о которых следует помнить при таком запуске? Возможно, мне следует запустить сервер с одного ноутбука и указать на файл .py в моем gdrive, который я обновляю как основной сервер? Мой вариант использования - это API-интерфейсы вывода / прогнозирования машинного обучения, которые я работал локально на своем ноутбуке. Любое понимание будет оценено! Спасибо еще раз. - person md598; 10.09.2020