内部服务器错误,尽管有try/except子句,但没有错误日志

2024-10-01 00:33:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的应用程序在Windows Server 2012上使用IIS运行。它用于在下面运行R脚本(这是一个非常复杂的脚本,并用Python重写它不是一个选项)。这是代码:

try:
    output = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8')
except:
    return jsonify({'output': 'Error!', 'returncode': '0', 'error': 'Unknown Error'})
else:
    error = str(output.stderr)
return jsonify({'output': str(output.stdout), 'returncode': str(output.returncode), 'error': error})

它由AJAX运行,大多数时候运行良好,但有时会导致“内部服务器错误”。

现在是有趣的部分。上述错误未被Exception子句捕获,它未记录在烧瓶中错误.log底层R脚本完成了它所要做的一切。所以,总之,一切都按应该的方式工作,但它没有任何特定的理由抛出内部服务器错误。这是非常恼人的,因为用户得到一个错误,尽管一切正常。

我已经尝试过不使用try/exceptive,也尝试使用“Exception as err”,但它们也不会记录任何错误。

这就是怎么回事错误.log是设置。它在应用程序的其他部分中工作,没有任何问题。

^{pr2}$

有什么想法吗?我如何才能捕捉到这个错误,以便我可以尝试调试它?

更新

我注意到内部服务器错误在大约1.5分钟后返回。当我将R脚本更改为简单的wait 10s命令时,它工作完美,因此似乎是超时问题。

我已将^{cd1>}和^{cd2>}上的超时设置为180s,但它没有帮助。还有别的地方我该看看吗?

更新2

我已经从方程式中取出ajax,并使用带有子流程的页面的标准超链接。它在1.5分钟后仍然会出现内部服务器错误。我也将R脚本更改为等待2分钟,脚本本身也没有任何问题(在获得错误30秒后)完成。


Tags: 服务器脚本应用程序outputreturn错误stderrstdout
1条回答
网友
1楼 · 发布于 2024-10-01 00:33:45

我找错地方了。该问题是由IIS管理器中的FastCGI活动超时设置引起的。超时时间只有70秒,而subprocess的处理时间要长得多。增加活动超时时间解决了这个问题。在

相关问题 更多 >