Skip to main content
 首页 » 编程设计

python之Twisted 中插件和应用程序插件的区别

2025年05月04日8jyk

这里有一个非常相似的问题:What's the difference between a twistd plugin and a twistd service?

答案是:

A plugin is nicer in that you can have command-line options

当我开始学习 twisted 时,我正在使用一个现有的应用程序,我很困惑入口点在哪里,它在 twisted/plugins 文件夹中的某个地方。

从那时起,我的首选方式是使用顶级文件夹中的 tac 文件,但现在我需要将一些命令行参数传递给我的脚本。我被告知要使用扭曲的应用程序插件。

我对 twisted 中的 plugin 一词感到困惑。对我来说,这意味着可以无缝地改变应用程序的东西 - 你真的不必知道它们的存在 - 它们只是“插入”到你的应用程序中改变它的行为。

但我无法理解扭曲的应用程序和扭曲的应用程序插件之间的概念差异。对我来说 - 它们的用途相同,但具有不同的功能 - 为什么?

什么时候应该使用扭曲的应用程序以及什么时候使用插件?

请您参考如下方法:

twisted 中的插件仅向 twistd 脚本添加命令和/或选项。它们不再意味着什么。

好吧,有两种方法可以为您的应用程序编写启动脚本,一种是使用 .tac 文件,一种是将命令(通过插件)添加到 twistd.

我觉得.tac文件比较容易写。

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

还有第三种方式:自己写启动脚本代替twistd。

But i cannot understand the conceptual difference between twisted applications and twisted application plugins. For me - they serve the same purpose, but are given different features - why?

嗯,不。他们的目的不同。 Twisted 应用程序只是一个 .tac 文件,可以用 twistd 脚本启动。它更像是一个配置文件。使用 python 语法的配置文件。它的目的是您不需要编写自己的启动脚本。但是如果 twistd 没有为您提供足够的选项,您可以为它编写一个插件。所以插件的目的是扩展 twistd。

如果我必须发布一个独立的应用程序,我会编写自己的启动脚本,而不会使用 twistd 脚本。 twistd 如果应用程序的用户熟悉 twisted 或拥有更多 twisted 应用程序,则可以。我认为看到 twistd 的所有不同选项对用户来说只是一种负担,而且如果不引用文档就无法启动应用程序是非常令人沮丧的。

例如scrapy这样做:它为不熟悉 twisted 的用户提供了脚本 scrapyd。