[英]Should I use separate WSGI servers for async frameworks like aiohttp and sanic?
[英]Reasons For Python Sanic or Async Frameworks To Use Asgiref?
我知道答案是“永遠取決於”,但總的來說,會有理由在Sanic等Async框架中使用asgiref包裝器。
https://github.com/django/asgiref https://github.com/channelcat/sanic
我的主要問題是,為什么有人會在異步框架中使用它,我理解Django的用例,但是如果您考慮了異步編程,那么類似的東西似乎有點懶惰,可以解決問題。
告訴我我錯了。
我對asgiref
特別不熟悉。 但是,話雖如此,我對asgi的想法很熟悉,可以替代wsgi。
用Sanic來說,這是無關緊要的。 Sanic具有內置的自己的服務器 ,並且開箱即用地異步運行。
我不想告訴您您本身是錯誤的,但是在Sanic世界中我看不到它的用處。
一,背景:
一些異步框架(如sanic
和aiohttp
早於ASGI成熟的時間,並且因為它適合用作異步服務器/應用程序接口。
結果,他們已經在其代碼庫中內置了Web服務器實現。 他們可以改用ASGI作為接口,而不是自己的內部接口,但這對他們的維護人員來說意味着很多工作。
那么,為什么它可能是值得的?
好吧,如果這樣做,他們將獲得的好處是:
uvicorn
, hypercorn
, daphne
服務器。)能夠實現服務器之間透明切換給出了一個更堅固的生態系統,意味着服務器實現可以跨框架共享。 Sanic將獲得具有HTTP / 2支持,Windows支持和PyPy支持的服務器實現,並且可以解決套接字流控制所存在的一些突出問題。 簡而言之,出於與WSGI有益相同的原因,ASGI是有益的。 對於sanic
而言,這sanic
一個勝利,而對於現在編寫一個新的asyncio框架的任何人來說,這都不是一個勝利,因為他們已經完成了編寫服務器實現的所有繁重工作,但是這樣做仍然有很多好處,而且它d絕對是整個社區的勝利。
相關: Sanic上的ASGI門票 。
(還請注意, asgiref
只是一個Python軟件包,帶有一些用於處理ASGI框架的幫助程序,這恰好是保存ASGI規范文檔的存儲庫。問題實際上是關於將Sansig用作ASGI,而不是使用asgiref
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.