首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么自定义编译的Python3.5应用程序在等待Web套接字消息时崩溃,而apt-get安装Python3.4没有崩溃?

为什么自定义编译的Python3.5应用程序在等待Web套接字消息时崩溃,而apt-get安装Python3.4没有崩溃?
EN

Stack Overflow用户
提问于 2017-07-20 10:04:58
回答 1查看 407关注 0票数 0

我在运行自编译Python3.5.2的应用程序中遇到了一个异常,我无法解释这个异常。服务器端有一个web套接字处理程序,它只会接收传入的连接,然后等待web套接字本身的输入:

代码语言:javascript
复制
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。

代码语言:javascript
复制
(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有问题。那可能是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 14:49:38

web服务器应用程序正在使用通过asyncio安装的最新版本3.4.3。然而,这个库似乎与Python3.5.2的使用相冲突。Python3.5.2应该附带它自己的异步,它已经在pypi上可用的版本上发展起来了。这就是说,提供适当的异步库以及Python3.5.2已经解决了这个问题。

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

https://stackoverflow.com/questions/45211581

复制
相关文章

相似问题

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