【问题标题】:How can I fix FastAPI application error on Apache WSGI?如何修复 Apache WSGI 上的 FastAPI 应用程序错误?
【发布时间】:2020-11-15 20:53:27
【问题描述】:
我正在尝试在运行 Apache 的服务器上运行 FastAPI 应用程序。 我已经相应地配置了 Apache 虚拟主机文件
<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName fastapi.example.com
        ServerAlias fastapi.example.com
        DocumentRoot /var/www/fastapi
        ErrorLog ${APACHE_LOG_DIR}/fastapi_error.log
        CustomLog ${APACHE_LOG_DIR}/fastapi_access.log combined
        WSGIScriptAlias / /var/www/fastapi/main.wsgi
        <Directory "/var/www/fastapi">
                AllowOverride All
        </Directory>
</VirtualHost>

并创建了 main.wsgi 和 main.py 文件。

ma​​in.wsgi

#! /usr/bin/python3.7

import logging
import sys
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/var/www/fastapi/')
from main import app as application
application.secret_key = 'alibaba'

ma​​in.py

from typing import Optional
from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}

当我尝试访问网络时,我收到 500 Internal server Error 并在 fastapi_access.log 中显示以下日志

mod_wsgi (pid=24946): Exception occurred processing WSGI script '/var/www/fastapi/main.wsgi'.
TypeError: __call__() missing 1 required positional argument: 'send'

您能否建议,我该如何解决这个问题,我做错了什么?

提前致谢。

【问题讨论】:

    标签: apache2 mod-wsgi fastapi


    【解决方案1】:

    WSGI 服务器与 FastAPI 不兼容,FastAPI 仅在 ASGI 服务器中运行,gunicorn 和所有其他 WSGI 服务器仅与 ASGI 工作人员深度实现 PEP 标准,它们仍然与工作人员一起作为 ASGI 工作。

    【讨论】:

    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 2020-12-13
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多