asgi cgi handler
1.0.0
تشغيل البرامج النصية CGI داخل خادم ASGI
استخدام بسيط
import uvicorn
from asgi_cgi import HTTPCGIHandler , WebsocketCGIHandler
uvicorn . run ( HTTPCGIHandler ())
from fastapi import FastAPI
from asgi_cgi import HTTPCGIHandler , WebsocketCGIHandler , SSECGIHandler
app = FastAPI ( title = "CGI Server" )
app . mount ( "/cgi-bin" , HTTPCGIHandler ()) # type: ignore
app . mount ( "/ws" , WebsocketCGIHandler ()) # type: ignore
app . mount ( "/sse" , SSECGIHandler ()) # type: ignore
كما ترون، لدينا دعم websocket، وهو مستوحى من websocketd. حاليا، هناك حاجة إلى مزيد من الاختبارات.
يطلب مسار WebsocketCGIHandler
الوصول إلى الملفات التنفيذية لنقطة النهاية وتغذية بيانات websocket في stdin الخاص بالعملية وإرسال stdout إلى العميل سطرًا تلو الآخر.
إن SSECGIHandler
، يعني server send event
، يشبه تمامًا websocket، ولكنه يرسل فقط stdout إلى العميل.
ErrHandler = Callable [[ bytes ], Union [ Awaitable [ None ], None ]]
class HTTPCGIHandler :
def __init__ ( self , directory : str = ..., error_handler : ErrHandler = ...) -> None : ...
class WebsocketCGIHandler :
def __init__ ( self , directory : str = ..., error_handler : ErrHandler = ...) -> None : ...
class SSECGIHandler :
def __init__ ( self , directory : str = ..., error_handler : ErrHandler = ...) -> None : ...