Google Colab में FastAPI / Uvicorn कैसे चलाएं?

Sep 10 2020

मैं Google Colab पर FastAPI / Uvicorn का उपयोग करके एक "लोकल" वेब ऐप चलाने की कोशिश कर रहा हूं, जैसे कि कुछ फ्लास्क ऐप का नमूना कोड मैंने देखा है, लेकिन इसे काम करने के लिए नहीं मिल सकता है। क्या कोई ऐसा कर पाया है? इसकी प्रशंसा करना।

स्थापित 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

जवाब

5 YagizDegirmenci Sep 10 2020 at 16:18

आप बाहरी url के रूप में पोर्ट निर्यात करने के लिए ngrok का उपयोग कर सकते हैं । मूल रूप से, 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)