Я начал работу над проектом клиент / сервер, используя Twisted (я новичок, поэтому опыта не так много).Вероятно, я все настроил неправильно, потому что теперь я немного застрял на сервере Daemon (используя twistd --python для его запуска).
Интересно, придется ли мне повторно реализовывать сервер как стандартный процесс, чтобы использовать его в моем модуле unittest?
Вот часть кода, позволяющая запустить сервер в качестве демонав модуле сервера (вы, вероятно, узнаете часть статей krondo в этом):
class TwistedHawkService(service.Service):
def startService(self):
''''''
service.Service.startService(self)
log.msg('TwistedHawkService running ...')
# Configuration
port = 10000
iface = 'localhost'
topService = service.MultiService()
thService = TwistedHawkService()
thService.setServiceParent(topService)
factory = ReceiverFactory(thService)
tcpService = internet.TCPServer(port, factory, interface=iface)
tcpService.setServiceParent(topService)
application = service.Application("TwistedHawkService")
topService.setServiceParent(application)
Я попытался скопировать / вставить часть конфигурации в методе setUp:
from mfxTwistedHawk.client import mfxTHClient
from mfxTwistedHawk.server import mfxTHServer
class RequestTestCase(TestCase):
def setUp(self):
# Configuration
port = 10000
iface = 'localhost'
self.topService = service.MultiService()
thService = mfxTHServer.TwistedHawkService()
thService.setServiceParent(self.topService)
factory = mfxTHServer.ReceiverFactory(thService)
tcpService = internet.TCPServer(port, factory, interface=iface)
tcpService.setServiceParent(self.topService)
application = service.Application("TwistedHawkService")
self.topService.setServiceParent(application)
def test_connection(self):
mfxTHClient.requestMain('someRequest')
... но, конечно, использование trial unittest.py не запускает демона, поэтому мой клиент не может его достать.
Любой советКак настроить все это будет оценено.
Спасибо!
Редактировать: Удалось сделать так, чтобы все работало с этим и с этим , но все еще чувствовать себя неувереннообо всем этом:
def setUp(self):
# Configuration
port = 10000
iface = 'localhost'
service = mfxTHServer.TwistedHawkService()
factory = mfxTHServer.ReceiverFactory(service)
self.server = reactor.listenTCP(port, factory, interface=iface)
Можно ли иметь реализацию демона для производства и стандартный процесс для unittest?