Twisted如何将一个协议公开给internet,以便通过httppost调用它?

2024-05-08 03:08:18 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,协议允许异步功能,但仅在TCP级别上。你知道吗

from twisted.internet import reactor, protocol, endpoints

class UpperProtocol( protocol.Protocol ):
    def connectionMade( self ):
        self.transport.write( "Convet to Uppercase !\n" )

    def connectionLost( self, reason ):
        pass

    def dataReceived( self, data ):
        self.transport.write( data.upper() )
        self.transport.loseConnection()


factory = protocol.ServerFactory()
factory.protocol = UpperProtocol

#reactor.listenTCP( 8000, factory )
endpoints.serverFromString( reactor, "tcp:8000" ).listen( factory )
reactor.run()

我可以用这个做一个POST请求:

from twisted.internet import reactor, endpoints
from twisted.web.resource import Resource
from twisted.web.server import Site
import intent

import cgi

class UpperCaller(Resource):
    def render_POST(self, request):
        text            = request.args[ "text" ][ 0 ]
        response        = text.upper()
        return cgi.escape( response )

root = Resource()
root.putChild( "upper", UpperCaller() )
factory  = Site( root )
endpoint = endpoints.TCP4ServerEndpoint( reactor, 8880 )
endpoint.listen( factory )
reactor.run()

如何调用post请求到达时要使用的协议? 如果通过POST服务器完成,它将不像Telnet的协议调用那样是异步的。你知道吗

我怎样才能让它通过一个邮政电话工作?我想让它成为一个API调用,在这里我传递文本,它通过调用协议返回输出。你知道吗


Tags: textfromimportself协议factorydeftwisted