【发布时间】:2021-11-10 00:01:32
【问题描述】:
我使用 Python3(Amazon Linux 2 VM 上的 Apache 2.4.46)从源代码安装了 mod-wsgi。
每次我重新加载我的 wsgi 守护程序时,我的 Apache 错误日志中都会出现以下错误:
Exception ignored in: <generator object path at 0x7f128e93fdd0>
Traceback (most recent call last):
File "/usr/lib64/python3.7/importlib/resources.py", line 190, in path
NameError: name 'FileNotFoundError' is not defined
我认为当守护程序关闭时会发生这种情况,因为我在关闭 Apache 时也会看到错误。
我在 python3 的虚拟环境中运行我的项目。 这是我的 Apache 配置:
<VirtualHost *:443>
<Directory /var/www/html/project/>
Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch
Require all granted
</Directory>
ErrorLog /home/ec2-user/apache_project_errors.log
ServerName project.projtds.net
DocumentRoot /var/www/html/project/
WSGIDaemonProcess project threads=1 processes=2 python-home=/var/www/html/project/venv home=/var/www/html/project
WSGIScriptAlias / /var/www/html/project/project.wsgi process-group=project
WSGIScriptReloading On
</VirtualHost>
我的 .wsgi 相当简单:
from project import create_app
application = create_app()
所有这些都调用了一个烧瓶应用程序(project.py):
from flask import Flask
def create_app():
app = Flask(__name__, instance_relative_config=False)
@app.route("/")
def home():
import sys
string = f"Python version {sys.version} Version info {sys.version_info}"
return string
return app
目前,我只检查 python 版本,因为该错误是 python2 解释器检查 python3 代码的典型错误......但 sys.version 确实显示为 3.7,我可以在我的项目中运行 python3 特定调用。
我检查了 wsgi 模块是如何在 Apache conf (/etc/httpd/conf.modules.d/wsgi.conf) 中加载的:LoadModule wsgi_module modules/mod_wsgi.so
我没有看到在同一 Apache 服务器下运行的其他非 wsgi 项目中的错误。 我不知道如何解决这个错误。它不会阻止我运行我的项目,但我很想知道错误的确切来源和原因。
有没有办法获取 mod-wsgi 调试日志?这是我需要在我的项目中做的事情吗? (烧瓶、.wsgi 等)
【问题讨论】:
标签: python-3.x apache exception mod-wsgi