๊ท๋์ฝ + ํจ์คํธํผ
from fastapi import FastAPI
app = FastAPI()
@app.post("/tet")
async def root():
return {"message": "Hello World"}
```
gunicorn -k gevent --bind "0.0.0.0:8080" --log-level ๋๋ฒ๊ทธ ๋ฉ์ธ:์ฑ
```
gunicorn -k tornado --bind "0.0.0.0:8080" --log-level debug main:app
email-validator not installed, email fields will be treated as str.
To install, run: pip install email-validator
[2019-11-08 16:05:42 +0800] [12796] [DEBUG] 1 workers
[2019-11-08 16:05:49 +0800] [12799] [DEBUG] GET /tet
[2019-11-08 16:05:49 +0800] [12799] [ERROR] Error handling request /tet
Traceback (most recent call last):
File "/home/ap/nlp/Anaconda3/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 56, in handle
self.handle_request(listener_name, req, client, addr)
File "/home/ap/nlp/Anaconda3/lib/python3.6/site-packages/gunicorn/workers/ggevent.py", line 160, in handle_request
addr)
File "/home/ap/nlp/Anaconda3/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 107, in handle_request
respiter = self.wsgi(environ, resp.start_response)
TypeError: __call__() missing 1 required positional argument: 'send'
FastAPI๋ ASGI ์๋ฒ์์๋ง ์คํ๋ฉ๋๋ค. gunicorn์ PEP 3333 WSGI ํ์ค ๊ตฌํ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ๋์ ํธํ๋์ง ์์ต๋๋ค.
@jamadden
๊ฐ์ฌํฉ๋๋ค. gunicorn์ worker_class๊ฐ 'uvicorn.workers.UvicornWorker'์ฌ์ผ ํ๋ค๋ ๋ป์ธ๊ฐ์?
์ฒ๋ผ
gunicorn -k uvicorn.workers.UvicornWorker --bind "0.0.0.0:8080" --log-level debug main:app
๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ด๊ฐ ์๋ ํ, ๊ทธ๊ฒ์ WSGI ๋์ ASGI๋ฅผ ๊ตฌํํ๋ ์ ์ผํ ์์ ์์ ๋๋ค.
๋ค, ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@jamadden
๊ฐ์ฌํฉ๋๋ค. gunicorn์ worker_class๊ฐ 'uvicorn.workers.UvicornWorker'์ฌ์ผ ํ๋ค๋ ๋ป์ธ๊ฐ์?
์ฒ๋ผ
๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?