我正在寻找一些关于如何处理我认为Twisted非常适合的问题的一般信息。 (我是Twisted但不是Python的新手)
我有一个家庭自动化控制器,可以支持单个TCP套接字连接,发送和接收二进制数据。我想使用XMPP作为套接字的桥接器,这样用户就可以发送命令并接收事件。
我有一个与Twisted一起使用的基本套接字连接,它能够从O'Reilly书中的一个示例发送和接收命令。我还有一个用SleekXMPP库编写的完全可用的Python XMPP bot,我很满意。我只是不确定如何将它们组合在一起。
基本情景是:
提示挑战的是#6,否则我只需要在需要写东西时按需打开/关闭套接字。
我在使用Twisted缠绕头部时遇到的问题是让这两个事件循环进行通信的最佳方法。我已经看到很多关于使用队列,延迟,线程,选择等的信息。我有一种感觉,如果我只是学会正确使用该工具,Twisted可以处理大部分复杂性。
如果有人可以指出我正确的方向,我会接球并与之一起跑。正如我所提到的,我对我的XMPP机器人感到满意,并且我想使用现有的代码。我认为我的问题现在归结为在后台创建套接字,然后在前台发送和接收来自该套接字的数据。
顺便说一下,我很高兴在我的代码工作后再分享我的代码,这样其他人就可以从我要求的帮助中受益。
- 斯科特
答案 0 :(得分:1)
非阻塞IO引擎的一个问题是它几乎全有或全无。一旦引入阻止代码,就会很快失去事件驱动的异步方法的大部分好处。只要有可能(根据经验),最好让整个应用程序在同一个反应堆上运行。
我认为,你有两种选择: