twisted中的插件与应用插件有什么区别?

2 投票
1 回答
919 浏览
提问于 2025-04-17 09:40

这里有一个很相似的问题:twistd插件和twistd服务有什么区别?

答案是:

插件的好处在于你可以使用命令行选项。

我刚开始学习Twisted的时候,是在一个已有的应用程序上工作,我搞不清楚入口点在哪里,结果发现它在twisted/plugins文件夹里。

从那以后,我更喜欢在顶层文件夹使用tac文件,但现在我遇到一个问题,需要给我的脚本传递一些命令行参数。于是有人告诉我应该使用Twisted应用插件。

我对Twisted中的“插件”这个词感到困惑。对我来说,插件意味着一种可以无缝改变应用程序的东西——你不需要知道它们的存在,它们就像“插入”到你的应用中,改变它的行为。

但是我无法理解Twisted应用和Twisted应用插件之间的概念区别。对我来说,它们的目的相同,但功能不同——这是为什么呢?

我应该什么时候使用Twisted应用,什么时候使用插件呢?

1 个回答

1

在Twisted中,插件只是给twistd脚本添加一些命令和选项,并没有其他的意思。

所以,确实有两种方法可以为你的应用程序写启动脚本,一种是使用.tac文件,另一种是通过插件给twistd添加命令。

我觉得.tac文件更容易写。

我认为同时使用插件和.tac文件并没有错。

还有第三种方法:自己写一个启动脚本,而不是使用twistd

但是我无法理解Twisted应用程序和Twisted应用插件之间的概念区别。对我来说,它们的目的相同,但功能不同,为什么呢?

其实不是。它们的目的并不相同。Twisted应用程序就是一个可以用twistd脚本启动的.tac文件。它更像是一个配置文件,用Python语法写的配置文件。它的目的是让你不需要自己写启动脚本。但是如果twistd提供的选项不够用,你可以为它写一个插件。所以插件的目的是扩展twistd

如果我要发布一个独立的应用程序,我会自己写一个启动脚本,而不是使用twistd脚本。如果应用的用户对Twisted不熟悉,或者没有更多的Twisted应用,使用twistd就不太合适。我觉得让用户看到twistd的各种选项只会增加负担,而且在没有参考文档的情况下无法启动应用会让人很沮丧。

例如,scrapy就是这样做的:它为不熟悉Twisted的用户提供了一个scrapyd脚本。

撰写回答