1

我正在创建这个应用程序,我正在考虑使用 Twisted 通过 XMPP(Jabber,聊天协议)与用户进行通信,将来也可能使用其他通信方式。我的应用程序旨在支持,或者更确切地说,依赖(独立开发的)插件。大多数插件将大部分时间花在 I/O 上。理想情况下,所有插件都会对所有 I/O 使用 Deferreds 并立即返回(即非阻塞),但我担心要求插件开发人员这样做会造成太大的负担,并且会减慢并阻止插件 -发展。阻塞高级库更为常见(想想 Facebook 或 Twitter 库),并且在开发一个简单的 10 loc Twitter 库之前要求一个可能不是很好的编码人员阅读 Deferreds 听起来不像我想做的事情.

Twisted 文档声明 threadPool 的最大默认大小为 10,并且我应该“在大幅改变线程池大小之前小心了解线程及其资源使用情况”,我认为我不这样做(理解) ,所以给每个插件一个自己的线程似乎也不是一个好主意。

有什么建议么?

谢谢您的帮助。

[编辑] 应用程序的独立(非服务器)版本也将可用。大多数插件开发人员可能会使用独立版本。这就是为什么我担心开发人员会选择简单的出路,并创建阻塞插件。

4

1 回答 1

2

不要使用线程。

对于不熟悉 Twisted 的人来说,如何让事情变得简单的最好例子是Scrapy定义其插件接口的方式。你从不看 a reactororDeferred或任何东西——你只是定义当某些页面被抓取时要做什么,作为回调。

或者,不要太担心它。有很多独立开发的协议支持插件,直接使用 Twisted API;在实现传输协议的层面上,大多数能够有效地做到这一点的人学习 Twisted 是没有问题的。

于 2013-07-18T16:57:59.653 回答