apache Django 3.0.5 with mod_wsgi:属性错误:“HttpResponse”对象没有属性“_resource_closers”

j1dl9f46  于 2023-06-24  发布在  Apache
关注(0)|答案(1)|浏览(172)

当我在mod_wsgi下部署Django 3.0.5时,我得到一个错误:AttributeError: 'HttpResponse' object has no attribute '_resource_closers'。我正在运行:

  • Python:3.6.8
  • Django:3.0.5
  • Apache:2.4.6
  • mod_wsgi:4.6.2

下面是导致错误的视图的基本信息;没有什么特别的(我已经简化了meetings_struct的代码):

  1. class MeetingsAPIView(MeetingsBaseView):
  2. def get(self, request, *args, **kwargs):
  3. meetings = self.get_meetings()
  4. meetings_struct = []
  5. for meeting in meetings:
  6. meetings_struct.append({
  7. "id": meeting.id,
  8. "name": meeting.title,
  9. "slug": meeting.slug,
  10. })
  11. return HttpResponse(meetings_struct, content_type="application/json")

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

  1. [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'.
  2. [Sat Apr 18 16:11:30.684834 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] Traceback (most recent call last):
  3. [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__
  4. [Sat Apr 18 16:11:30.684903 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] response = self.get_response(request)
  5. [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
  6. [Sat Apr 18 16:11:30.684933 2020] [wsgi:error] [pid 4154] [remote 100.19.146.139:54397] response._resource_closers.append(request.close)
  7. [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'

我已经回滚到以前的版本,运行Django 2.2;堆栈的其余部分相同。这一点让我感到困惑,因为使用Apache配置使用的相同venv的相同部署代码在runserver下工作正常,但在mod_wsgi上出错。
我尝试过停止并启动Apache,再次运行发布过程以获得新的venv和代码库,甚至重新启动服务器。同样的错误也会发生,但仅在Apache / mod_wsgi下。
有什么办法吗?我很困惑!

6yjfywim

6yjfywim1#

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

相关问题