带有 mod_wsgi 的 Django 3.0.5: AttributeError: 'HttpResponse' 对象没有属性 '_resource_closers'

Fli*_*rPA 5 python apache django mod-wsgi

mod_wsgi:下部署 Django 3.0.5 时出现错误AttributeError: 'HttpResponse' object has no attribute '_resource_closers'。我在跑:

  • 蟒蛇:3.6.8
  • 姜戈:3.0.5
  • 阿帕奇:2.4.6
  • mod_wsgi:4.6.2

这是导致错误的视图的基础知识;没什么特别的(我已经简化了周围的代码meetings_struct):

class MeetingsAPIView(MeetingsBaseView):
    def get(self, request, *args, **kwargs):
        meetings = self.get_meetings()
        meetings_struct = []

        for meeting in meetings:
            meetings_struct.append({
                "id": meeting.id,
                "name": meeting.title,
                "slug": meeting.slug,
            })

        return HttpResponse(meetings_struct, content_type="application/json")
Run Code Online (Sandbox Code Playgroud)

如果我在服务器上的端口 80 上激活venvrunserver手动使用,相同的视图不会给出错误。当相同的代码venv在 Apache 下运行时,这是 Apache 日志中的错误:

[Sat Apr 18 16:11:30.683980 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] mod_wsgi (pid=4154): Exception occurred processing WSGI script '/var/django/sites/mysite-prod/config/wsgi.py'.
[Sat Apr 18 16:11:30.684834 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] Traceback (most recent call last):
[Sat Apr 18 16:11:30.684891 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397]   File "/var/django/sites/mysite-prod/venv/lib64/python3.6/site-packages/django/core/handlers/wsgi.py", line 133, in __call__
[Sat Apr 18 16:11:30.684903 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397]     response = self.get_response(request)
[Sat Apr 18 16:11:30.684925 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397]   File "/var/django/sites/mysite-prod/venv/lib64/python3.6/site-packages/django/core/handlers/base.py", line 76, in get_response
[Sat Apr 18 16:11:30.684933 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397]     response._resource_closers.append(request.close)
[Sat Apr 18 16:11:30.684964 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] AttributeError: 'HttpResponse' object has no attribute '_resource_closers'
Run Code Online (Sandbox Code Playgroud)

我已经回滚到运行 Django 2.2 的先前版本;堆栈的其余部分是相同的。这其中有我百思不得其解,因为使用相同的部署代码相同的venvApache是否配置为使用正常工作下runserver,但有错误mod_wsgi

我已经尝试停止和启动 Apache,再次运行发布过程以获得新的venv代码库,甚至重新启动服务器。出现同样的错误,但仅在 Apache/mod_wsgi 下。

有任何想法吗?我很困惑!

Nat*_*les 0

清除/清除/刷新服务器的缓存(例如 Memcache 或 Redis)。