Gunicorn: рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: __call__() рд▓рд╛рдкрддрд╛ 1 рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рддреАрдп рддрд░реНрдХ: 'рднреЗрдЬреЗрдВ'

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рдирд╡ре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: benoitc/gunicorn

рдЧрдирд┐рдХреЛрд░реНрди + рдлрд╛рд╕реНрдЯрд╛рдкреА

рдлрд╛рд╕реНрдЯрд╛рдкреА:

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 рдбреАрдмрдЧ main:app

 ```
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'

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@jamadden
рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рд╡рд░реНрдХрд░_рдХреНрд▓рд╛рд╕ 'uvicorn.workers.UvicornWorker' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдкрд╕рдВрдж

gunicorn -k uvicorn.workers.UvicornWorker --bind "0.0.0.0:8080" --log-level debug main:app

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ?

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

FastAPI рдХреЗрд╡рд▓ ASGI рд╕рд░реНрд╡рд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдЧрдирд┐рдХреЛрд░реНрди рдХреЗрд╡рд▓ рдкреАрдИрдкреА 3333 рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдорд╛рдирдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВред

@jamadden
рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рд╡рд░реНрдХрд░_рдХреНрд▓рд╛рд╕ 'uvicorn.workers.UvicornWorker' рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдкрд╕рдВрдж

gunicorn -k uvicorn.workers.UvicornWorker --bind "0.0.0.0:8080" --log-level debug main:app

рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ?

рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╡рд╣реА рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ рдЬреЛ WSGI рдХреЗ рдмрдЬрд╛рдп ASGI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

thomasjungblut picture thomasjungblut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lordmauve picture lordmauve  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mrwillis picture mrwillis  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

twosigmajab picture twosigmajab  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Bogdanp picture Bogdanp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ