twisted12 发布twisted的插件

twisted插件以项目目录结构的形式进行组织,结构如下:



echoproject

|

-twisted

|

-plugins

|

插件列表

|

协议工厂

协议工厂

.....


使用twistd.py在echoproject根目录上运行,则可以直接列出echo_plugin.py中的插件信息。在命令行输入twistd.py --help,如下:


可以看到左侧命令行窗口显示的echo TCP-based echo server服务器。根据twistd.py echo --help查看该插件的帮助,便可以直接使用该插件了。


echo.py

from twisted.internet import reactor
from twisted.internet.protocol import Protocol, Factory

class Echo(Protocol):
	def dataReceived(self, data):
		print '->Receievd: ',data
		self.transport.write(data)


class EchoFactory(Factory):
	protocol = Echo





echo_plugin.py

from twisted.application.service import IServiceMaker
from twisted.application import internet
from twisted.plugin import IPlugin
from twisted.python import usage

from echo import EchoFactory
from zope.interface import implements

class Options(usage.Options):
	optParameters = [['port','p', 8000, 'Port number']]

class EchoServiceMaker(object):
	implements(IServiceMaker, IPlugin)

	#IPlugin informations
	tapname='echo'
	description = 'TCP-based echo server'
	options = Options

	#IServiceMaker services
	def makeService(self, options):
		'''
		Construct a TCPServer from a factory defined in echo.py
		'''
		return internet.TCPServer(int(options['port']), EchoFactory())

serviceMaker = EchoServiceMaker()


需要有一个类从usage.Options派生,需要有一个类从object派生,并实现IPlugin和IServiceMaker的接口。并在该类中实现makeService函数返回服务。

定义一个变量serviceMaker即可生成一个twisted的插件。由twisted的工具twistd.py来启动该插件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值