apache2 - 如何修复 Apache WSGI 上的 FastAPI 应用程序错误?

标签 apache2 mod-wsgi fastapi

我正在尝试在运行 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 文件。
main.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'
main.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 内部服务器错误 使用以下登录 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'
您能否提供建议,我该如何解决这个问题,我做错了什么?
提前致谢。

最佳答案

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

关于apache2 - 如何修复 Apache WSGI 上的 FastAPI 应用程序错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63099843/

相关文章:

python - 为什么查询 MySQL 数据库的 "user is taken"方法会传递不可变字典?

django - Apache 挂起 mod_wsgi + django

python - FastAPI 与 pandas.read_sql() 的并行性

python - 使用 FastAPI 支持表单和 json 编码的主体

Apache + WSGI : Address already in use: make_sock: could not bind to address

php - Apache 不执行 php 文件,但启用了 mod_php5

python - 使用 mod_wsgi 和 WinSCP 在 Apache 服务器上部署 Flask 应用程序

python - 将 FastAPI 中的请求记录到项目目录中的特定文件中

php - Ubuntu 12.04 上的 Apache2 : mysqlnd+mysqli and pdo_mysql - can i have both?

python - 操作系统错误 : [Errno 98] Address already in use Running Flask Application on Apache2