twisted中的插件与应用插件有什么区别?
这里有一个很相似的问题:twistd插件和twistd服务有什么区别?
答案是:
插件的好处在于你可以使用命令行选项。
我刚开始学习Twisted的时候,是在一个已有的应用程序上工作,我搞不清楚入口点在哪里,结果发现它在twisted/plugins
文件夹里。
从那以后,我更喜欢在顶层文件夹使用tac
文件,但现在我遇到一个问题,需要给我的脚本传递一些命令行参数。于是有人告诉我应该使用Twisted应用插件。
我对Twisted中的“插件”这个词感到困惑。对我来说,插件意味着一种可以无缝改变应用程序的东西——你不需要知道它们的存在,它们就像“插入”到你的应用中,改变它的行为。
但是我无法理解Twisted应用和Twisted应用插件之间的概念区别。对我来说,它们的目的相同,但功能不同——这是为什么呢?
我应该什么时候使用Twisted应用,什么时候使用插件呢?
1 个回答
在Twisted中,插件只是给twistd
脚本添加一些命令和选项,并没有其他的意思。
所以,确实有两种方法可以为你的应用程序写启动脚本,一种是使用.tac
文件,另一种是通过插件给twistd
添加命令。
我觉得.tac
文件更容易写。
我认为同时使用插件和.tac
文件并没有错。
还有第三种方法:自己写一个启动脚本,而不是使用twistd
。
但是我无法理解Twisted应用程序和Twisted应用插件之间的概念区别。对我来说,它们的目的相同,但功能不同,为什么呢?
其实不是。它们的目的并不相同。Twisted应用程序就是一个可以用twistd
脚本启动的.tac
文件。它更像是一个配置文件,用Python语法写的配置文件。它的目的是让你不需要自己写启动脚本。但是如果twistd
提供的选项不够用,你可以为它写一个插件。所以插件的目的是扩展twistd
。
如果我要发布一个独立的应用程序,我会自己写一个启动脚本,而不是使用twistd
脚本。如果应用的用户对Twisted不熟悉,或者没有更多的Twisted应用,使用twistd
就不太合适。我觉得让用户看到twistd
的各种选项只会增加负担,而且在没有参考文档的情况下无法启动应用会让人很沮丧。
例如,scrapy就是这样做的:它为不熟悉Twisted的用户提供了一个scrapyd
脚本。