我在应用程序中使用txnet监视某些服务器是否启动,它有一个Web界面,因此反应堆连同listenICMP for ping请求(是txnet中提供的反应堆)也是listenTCP用于Web服务器。我的问题是关于如何使用twistd进行守护。 Twisted.internet.application根据api提供:
TCPServer,TCPClient,UNIXServer,UNIXClient,SSLServer,SSLClient,UDPServer,UDPClient,UNIXDatagramServer,UNIXDatagramClient,MulticastServer
我猜我必须实施自己的服务,但我很难找到一个很好的例子来做到这一点,最好在线解释krondo tutorial daemonology 但它没有改变反应堆的参考。总结:为了守护这样的东西,最好的选择是什么?:
import json
from txnet.reactor import reactor
from twisted.web import server, resource
from twisted.internet.protocol import DatagramProtocol
result = {}
class PingProtocol(DatagramProtocol):
ICMP_ECHOREPLY = 0
def datagramReceived(self, datagram, address):
ip, port = address
result[ip] = True
class WebServer(resource.Resource):
def __init__(self):
resource.Resource.__init__(self)
self.putChild('', self)
def render_GET(self, request):
str = json.dumps(result)
result.clear()
return str
wserver = WebServer()
reactor.listenTCP(8081, server.Site(wserver))
reactor.listenICMP(0, PingProtocol())
reactor.run()
我知道listenUDP可能在这里工作,但这是一个简化版本,我真的需要听IC。