【问题标题】:django socketio - SocketIOHandler errordjango socketio - SocketIOHandler 错误
【发布时间】:2014-08-25 21:40:10
【问题描述】:

我无法使用django-socketio,我收到此错误:

AttributeError: 'SocketIOHandler' object has no attribute 'response_headers_list'

终端:

Traceback (most recent call last):
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/server.py", line 49, in handle
    handler.handle()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/pywsgi.py", line 184, in handle
    result = self.handle_one_request()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/pywsgi.py", line 321, in handle_one_request
    self.handle_one_response()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/handler.py", line 58, in handle_one_response
    self.handle_one_response(call_wsgi_app=False)
TypeError: handle_one_response() got an unexpected keyword argument 'call_wsgi_app'
<Greenlet at 0x10247ac30: <bound method SocketIOServer.handle of <SocketIOServer at 0x1028ce8d0 fileno=5 address=127.0.0.1:8000>>(<socket at 0x102976210 fileno=[Errno 9] Bad file d, ('127.0.0.1', 51457))> failed with TypeError

Traceback (most recent call last):
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/server.py", line 49, in handle
    handler.handle()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/pywsgi.py", line 184, in handle
    result = self.handle_one_request()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/gevent/pywsgi.py", line 321, in handle_one_request
    self.handle_one_response()
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/handler.py", line 68, in handle_one_response
    jobs = self.transport.connect(session, request_method)
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/transports.py", line 92, in connect
    self.write_packed(session_id)
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/transports.py", line 19, in write_packed
    self.write(data)
  File "/Volumes/DATA/Projekti/virtualenv/caffetouch/lib/python2.7/site-packages/socketio/transports.py", line 22, in write
    if 'Content-Length' not in self.handler.response_headers_list:
AttributeError: 'SocketIOHandler' object has no attribute 'response_headers_list'
<Greenlet at 0x10247ac30: <bound method SocketIOServer.handle of <SocketIOServer at 0x1028ce8d0 fileno=5 address=127.0.0.1:8000>>(<socket at 0x102976210 fileno=[Errno 9] Bad file d, ('127.0.0.1', 51460))> failed with AttributeError

我认为这是显示,因为它不受新 django 或类似的支持。

有什么办法吗?

【问题讨论】:

    标签: python django sockets socket.io django-socketio


    【解决方案1】:

    希望不会太晚。这实际上是一个兼容性问题。您需要卸载一些较新的软件包。见here

    这是我的配置的一部分。它有效。

    $ pip list
    Django (1.6.7)
    django-socketio (0.3.8)
    gevent (0.13.6)
    gevent-socketio (0.2.1)
    gevent-websocket (0.2.3)
    greenlet (0.4.5)
    pip (1.5.6)
    setuptools (6.0.2)
    sphinx-me (0.3)
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 django 1.8 或更高版本,则需要卸载新版本并使用给定命令安装以前的版本:

      pip install django-socketio==0.3.9
      pip uninstall gevent-socketio gevent
      pip install gevent-socketio==0.2.1 gevent==0.13.6 
      

      更多详情请看以下话题:https://github.com/stephenmcd/django-socketio/issues/63

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 2014-03-19
        • 2020-04-09
        • 2017-10-27
        • 2019-07-24
        • 2016-06-02
        相关资源
        最近更新 更多