กรอบ ASGI เล็กๆ ที่ส่องประกาย
เอกสารประกอบ : https://www.starlette.io
ซอร์สโค้ด : https://github.com/encode/starlette
Starlette เป็นเฟรมเวิร์ก/ชุดเครื่องมือ ASGI น้ำหนักเบา ซึ่งเหมาะสำหรับการสร้างบริการเว็บแบบอะซิงก์ใน Python
พร้อมสำหรับการผลิต และให้สิ่งต่อไปนี้แก่คุณ:
httpx
asyncio
และ trio
$ pip install starlette
คุณจะต้องติดตั้งเซิร์ฟเวอร์ ASGI เช่น uvicorn, daphne หรือไฮเปอร์คอร์น
$ pip install uvicorn
from starlette . applications import Starlette
from starlette . responses import JSONResponse
from starlette . routing import Route
async def homepage ( request ):
return JSONResponse ({ 'hello' : 'world' })
routes = [
Route ( "/" , endpoint = homepage )
]
app = Starlette ( debug = True , routes = routes )
จากนั้นรันแอปพลิเคชันโดยใช้ Uvicorn:
$ uvicorn example:app
สำหรับตัวอย่างที่สมบูรณ์ยิ่งขึ้น โปรดดูที่ encode/starlette-example
Starlette ต้องการเพียง anyio
และรายการต่อไปนี้เป็นทางเลือก:
httpx
- จำเป็นหากคุณต้องการใช้ TestClient
jinja2
- จำเป็นหากคุณต้องการใช้ Jinja2Templates
python-multipart
- จำเป็นหากคุณต้องการรองรับการแยกวิเคราะห์แบบฟอร์มด้วย request.form()
itsdangerous
- จำเป็นสำหรับการสนับสนุน SessionMiddleware
pyyaml
- จำเป็นสำหรับการสนับสนุน SchemaGenerator
คุณสามารถติดตั้งทั้งหมดนี้ด้วย pip install starlette[full]
Starlette ได้รับการออกแบบมาเพื่อใช้เป็นเฟรมเวิร์กที่สมบูรณ์หรือเป็นชุดเครื่องมือ ASGI คุณสามารถใช้ส่วนประกอบใด ๆ ได้อย่างอิสระ
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
เรียกใช้แอปพลิเคชัน app
ใน example.py
:
$ uvicorn example:app
INFO: Started server process [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
เรียกใช้ uvicorn ด้วย --reload
เพื่อเปิดใช้งานการโหลดซ้ำอัตโนมัติเมื่อมีการเปลี่ยนแปลงโค้ด
ความเป็นโมดูลาร์ที่ Starlette ออกแบบมาส่งเสริมการสร้างส่วนประกอบที่นำมาใช้ซ้ำได้ ซึ่งสามารถแชร์ระหว่างเฟรมเวิร์ก ASGI ใดก็ได้ สิ่งนี้ควรเปิดใช้งานระบบนิเวศของมิดเดิลแวร์ที่ใช้ร่วมกันและแอปพลิเคชันที่ติดตั้งได้
การแยก API ที่ชัดเจนยังช่วยให้เข้าใจแต่ละองค์ประกอบแยกกันได้ง่ายขึ้น
Starlette เป็นรหัสลิขสิทธิ์ BSD
ออกแบบและสร้างสรรค์ด้วยความใส่ใจ
- -