首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致wfastcgi.py中未处理异常的原因: Django +IIS中的跟踪(最近一次调用)

导致wfastcgi.py中未处理异常的原因: Django +IIS中的跟踪(最近一次调用)
EN

Stack Overflow用户
提问于 2021-12-10 14:07:30
回答 1查看 357关注 0票数 3

我正在windows服务器2019上使用Django和IIS 10 web服务创建一个web应用程序。我在配置在wfastcgi中的web.config日志文件中有问题。日志的内容:

代码语言:javascript
复制
2021-12-10 16:26:35.568572: Unhandled exception in wfastcgi.py: Traceback (most recent call last):
  File "c:\python37\lib\site-packages\wfastcgi.py", line 774, in main
    record = read_fastcgi_record(fcgi_stream)
  File "c:\python37\lib\site-packages\wfastcgi.py", line 158, in read_fastcgi_record
    data = stream.read(8)     # read record
OSError: [Errno 22] Invalid argument
2021-12-10 16:26:35.615397: Running on_exit tasks
2021-12-10 16:26:35.646693: wfastcgi.py 3.0.0 closed
2021-12-10 16:59:42.309400: wfastcgi.py will restart when files in C:\inetpub\wwwroot\ are changed: .*((\.py)|(\.config))$
2021-12-10 16:59:42.340650: wfastcgi.py 3.0.0 initialized

每小时启动OSError: [Error 22]并运行退出任务,分钟后再次重新启动。我在web.config中添加了以下一行,但没有任何影响:

代码语言:javascript
复制
<add key="SCRIPT_NAME" value="/Music_backend" />

整个web.config文本如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
  </system.webServer>

  <appSettings>
    <add key="PYTHONPATH" value="C:\inetpub\wwwroot\Music_backend" />
    <add key="WSGI_HANDLER" value="Music_backend.wsgi.application" />
    <add key="DJANGO_SETTINGS_MODULE" value="Music_backend.settings" />
<add key="SCRIPT_NAME" value="/Music_backend" />
    <add key="WSGI_LOG" value="c:\wfastcgi.log"/>
  </appSettings>
    <location path="" overrideMode="Deny">
        <system.webServer>
        </system.webServer>
    </location>
    <location path="" overrideMode="Allow">
        <system.webServer>
    <handlers>
      <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python37\python.exe|c:\python37\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
        </system.webServer>
    </location>
</configuration>

此外,我激活了Django.server、Django.request、Django.db.Backend、LOGGING选项,但在所有日志文件中没有任何证据。我知道这个问题可能存在于没有"r"前缀的包含路径的字符串中,但是没有任何日志文件可用于检测问题。非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-11-11 14:49:28

同样的情况发生在我将服务器升级到IIS 10 (从7.5升级到IIS 10)时。我认为这只是两个IIS版本之间行为的改变,IIS 10以不同于以前的方式向工作人员关闭管道,从而导致错误(而不是简单地返回空的EOF)。

为此,我将函数的第一行改为:

代码语言:javascript
复制
def read_fastcgi_record(stream):
    """reads the main fast cgi record"""
    try:
        data = stream.read(8)     # read record
    except OSError as ex:
        if (ex.errno != 22):    # "Invalid argument".
            raise
        data = None

我没有看到修改过的代码有任何问题,并且日志中没有跟踪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70305734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档