我有一些 python 代码可能会导致除以 0,但它在 python (3.2) 解释器中正确运行。但是,如果我尝试使用 mod_wsgi 运行它,它只会挂起而不会出现错误,并且不会提供请求。
解释器中的警告(输出正确):pathwayAnalysis.py:30: RuntimeWarning: divide by zero encountered in double_scalars
有谁知道使用 mod_wsgi 运行它的正确方法是什么?
代码如下。差异和大小都是长度为 2 的 numpy 浮点数组。任何一个浮点数都difference
可能为 0(但不能同时为 0)。在此之前添加difference += 0.0001
使其正常运行,但不是一个好的解决方案,因为输出不准确:
if abs(difference[0] / difference[1]) > (size[0] / size[1]):
ratio = abs(size[0] / difference[0])
else: ratio = abs(size[1] / difference[1])
for i in range(len(base)):
result.append(base[i] + difference[i] * ratio/2)
return array(result)
执行以下操作不起作用:
try:
cond = abs(difference[0] / difference[1]) > (size[0] / size[1])
except RuntimeWarning:
cond = True
# hangs before this point
if cond:
'''as above'''
一些测试代码(使用任一difference
定义):
def application(environ, start_response):
from numpy import array
size = array([10., 10.])
difference = array([115., 0.]) # hangs
difference = array([115., 10.]) # returns page with text 'Yes.'
if abs(difference[0]/difference[1]) > (size[0]/size[1]):
output = 'Yes.'
else:
output = 'No.'
status = '200 OK'
response_headers = [('Content-type', 'text/plain'),\
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]