В настоящее время у меня есть приложение, имеющее два сервера: первый обрабатывает заказы и отвечает индивидуально, второй передает результаты другим заинтересованным абонентам. Они должны обслуживаться из разных портов. Я могу запустить() оба из них, но я могу получить только один или другой для serve_forever(), поскольку я прочитал, что это функция блокировки. Я ищу идеи о том, как сохранить оба сервера от выхода. сокращенный код ниже:Как я могу хранить несколько серверов gevent навсегда?
def main():
stacklist = []
subslist = []
stacklist.append(CreateStack('stuff'))
subslist.append(Subscription('stuff'))
bcastserver = BroadcastServer(subslist) # creates a new server
tradeserver = TradeServer(stacklist) # creates a new server
bcastserver.start() # start accepting new connections
tradeserver.start() # start accepting new connections
#bcastserver.serve_forever() #if I do it here, the first one...
#tradeserver.serve_forever() #blocks the second one
class TradeServer(StreamServer):
def __init__(self, stacklist):
self.stacklist = stacklist
StreamServer.__init__(self, ('localhost', 12345), self.handle)
#self.serve_forever() #If I put it here in both, neither works
def handle(self, socket, address):
#handler here
class BroadcastServer(StreamServer):
def __init__(self, subslist):
StreamServer.__init__(self, ('localhost', 8000), self.handle)
self.subslist = subslist
#self.serve_forever() #If I put it here in both, neither works
def handle(self, socket, address):
#handler here
Возможно, мне просто нужен способ, чтобы держать два от выхода, но я не знаю, как. В конце концов, я хочу, чтобы оба сервера всегда слушали входящие соединения и обрабатывали их.
оба сервера должны одни и те же внутреннее состояние – domoarrigato
теперь мы должны спросить себя, если это хорошее дизайнерское решение. – blakev
Да, я согласен, что это не идеально. для разработки требуется, чтобы широковещательный сервер публиковал сводку активности на основе подписки на один порт и обрабатывал взаимодействие через другой API на другом порту. Я думаю, что решение для базы данных не будет достаточно быстрым: количество сообщений в секунду в среднем не может быть использовано в тысячах сообщений. Я бы хотел в конце концов демонизировать оба процесса, поэтому, если их можно независимо запустить и остановить. Для этого потребуется какая-то транспортная связь между ними. На данный момент это просто работает, и запуск их из одного и того же процесса помогает мне быстрее разрабатывать и тестировать другие функции. – domoarrigato