【问题标题】:How to run multiple threads on buffered data in twisted?如何在扭曲的缓冲数据上运行多个线程?
【发布时间】:2017-08-24 06:09:16
【问题描述】:
Image of an abstract model
我已经使用 python-socketIO 实现了这个模型,但是我无法在扭曲中做类似的事情。我有一个数据输入,我以 8192 字节的块读取这些数据。这是二进制数据,因此需要在将其发送给客户端之前对其进行处理。但是我无法停止输入数据进行处理。在 python-socketIO 中,我曾经将该函数作为后台任务处理此数据,同时我继续获取更多数据。任何想法我可以如何使用扭曲的 python 库做类似的事情。
【问题讨论】:
标签:
python-2.7
websocket
twisted
【解决方案1】:
“后台任务”我想你的意思是一个线程。您可以使用 Twisted 处理线程。涉及概念最少的最多方法是deferToThread:
from twisted.internet.protocol import Protocol
from twisted.internet.threads import deferToThread
class YourProtocol(Protocol):
def dataReceived(self, data):
d = deferToThread(your_process_data, data)
d.addCallback(your_result_handler)
d.addErrback(your_error_handler)