我有一个Python脚本,它使用PEST wsgi库异步执行函数。但是,当我尝试导入另一个模块时,它只会导致500错误。
我尝试引用它的方式是:
from foo import *
from foo import Foo
其中foo是一个文件.py,其中我有我想要引用的对象。
尝试通过Chrome的Inspect Element Control监控来电,但找不到任何东西。
还尝试使用Apache的错误日志进行调试,但没有任何内容 任何提示赞赏。
更新: 我尝试过以下操作导致同样的500错误:
- 利用
import site
和
site.addsitedir("path/to/my/py/files/folder")
- 通过插入以下内容修改Apache2 httpd.conf文件:
WSGIPythonPath /path/to/my/py/files/folder
- 通过插入上面的WSGIPythonPath
修改/etc/apache2/sites-available/myapp.conf中的应用程序配置文件答案 0 :(得分:3)
Apache的500错误只是告诉你Python脚本返回错误。我的猜测是,在Apache环境中,Python无法找到该模块。尝试打印sys.path
的简单脚本,并确保其中包含您期望的目录。
答案 1 :(得分:2)
添加
WSGIPythonPath /path/to/my/py/files/folder
在应用程序配置文件中的任何其他别名或目录确实产生差异之前。 问题解决了!
答案 2 :(得分:1)
也许您应该将此模式用于cgi脚本以获取html格式的错误:
import cgi
import cgitb; cgitb.enable() # for troubleshooting
import traceback
# code here
except:
tb = traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
tb = ''.join(tb)
print '<pre>%s</pre></body></html>' % tb
答案 3 :(得分:0)
如果异常传播回mod_wsgi,则应将详细信息记录到相应的Apache错误日志中。如果不是,则可能是您正在使用的WSGI框架/工具包正在捕获异常并返回通用HTTP 500响应页面。如果是这种情况,您可能需要在正在使用的WSGI框架/工具包中启用调试选项。
或者,问题不在于WSGI脚本文件/应用程序,而在于Apache配置,在这种情况下,您不会寻找Python异常/回溯。因此,您需要更仔细地查看Apache错误日志文件,并查找任何错误并提供它所说的内容。