【发布时间】:2021-08-23 02:09:48
【问题描述】:
我有最新的 Python2.7 龙卷风。我将它用作 websocket 服务器。由于它称自己为“异步网络库”(见下文),因此很自然地假设可以异步发送消息。我该怎么做呢?
pip show tornado
---
Metadata-Version: 2.0
Name: tornado
Version: 5.1.1
Summary: Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
Home-page: http://www.tornadoweb.org/
Author: Facebook
Author-email: python-tornado@googlegroups.com
This question has been asked for Python 3 already.我的问题是关于Python2.7的。 Python3 解决方案(tornado.ioloop.asyncio_loop.call_soon_threadsafe)在 Python2.7 中不起作用:
tornado.ioloop.asyncio_loop.call_soon_threadsafe(Send, srv, msg)
AttributeError: 'module' object has no attribute 'asyncio_loop'
我还尝试了 add_callback 函数,因为其他函数中有 cmets 说“使用 add_callback 将控制权转移到 IOLoop 的线程”这听起来正是我想要的......但它似乎没有做任何事情(我的回调没有被调用。)
我也尝试过简单地使用互斥锁调用write_message,甚至每次都从同一个线程,但这不起作用:tornado 偶尔(并且仅在中等负载下)从主线程(“事件循环”)调用iostream,并通过在没有锁的情况下同时访问它来破坏它。
Python2.7版本中安全调度异步事件的功能是什么?
【问题讨论】:
标签: multithreading python-2.7 tornado