我在运行自编译Python3.5.2的应用程序中遇到了一个异常,我无法解释这个异常。服务器端有一个web套接字处理程序,它只会接收传入的连接,然后等待web套接字本身的输入:
request = ...
wsock = aiohttp.web.WebSocketResponse()
yield from wsock.prepare(request)
msg = yield from wsock.receive_json() # throws TypeError引发的异常:
TypeError('Received message 258:AttributeError("\'_UnixSelectorEventLoop\' object has no attribute \'create_future\'",) is not WSMsgType.TEXT',)
在堆栈跟踪的每个调用中,我没有发现任何抛出此错误的行。当使用预构建的Python3.4运行相同的代码时,web套接字服务器工作得很好。我们使用OpenEmbedded预先配置的Python3.5.2,因为我们正在构建自己的Linux。
(Pdb) w
/srv/homeassistant/venv/bin/hass(11)<module>()
-> sys.exit(main())
/srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/__main__.py(396)main()
-> exit_code = setup_and_run_hass(config_dir, args)
/srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/__main__.py(325)setup_and_run_hass()
-> return hass.start()
/srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/core.py(144)start()
-> self.loop.run_forever()
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/base_events.py(276)run_forever()
-> self._run_once()
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/base_events.py(1172)_run_once()
-> handle._run()
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/events.py(120)_run()
-> self._callback(*self._args)
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/tasks.py(292)_wakeup()
-> self._step(value, None)
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/tasks.py(236)_step()
-> result = coro.send(value)
/srv/homeassistant/venv/lib/python3.5/site-packages/aiohttp/web_protocol.py(417)start()
-> resp = yield from self._request_handler(request)
/srv/homeassistant/venv/lib/python3.5/site-packages/aiohttp/web.py(289)_handle()
-> resp = yield from handler(request)
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/coroutines.py(143)coro()
-> res = yield from res
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/coroutines.py(143)coro()
-> res = yield from res
/srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/components/http/ban.py(58)ban_middleware_handler()
-> return (yield from handler(request))
/srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/components/http/__init__.py(425)handle()
-> result = yield from result
/srv/homeassistant/venv/lib/python3.5/site-packages/asyncio/coroutines.py(143)coro()
-> res = yield from res
> /srv/homeassistant/venv/lib/python3.5/site-packages/homeassistant/components/websocket_api.py(322)handle()所以我假设我们的自编Python 3.5.2有问题。那可能是什么?
发布于 2017-07-20 14:49:38
web服务器应用程序正在使用通过asyncio安装的最新版本3.4.3。然而,这个库似乎与Python3.5.2的使用相冲突。Python3.5.2应该附带它自己的异步,它已经在pypi上可用的版本上发展起来了。这就是说,提供适当的异步库以及Python3.5.2已经解决了这个问题。
https://stackoverflow.com/questions/45211581
复制相似问题