Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Серверная консоль и выход из программы

271
12 июля 2012 года
MrXaK
721 / / 31.12.2002
Пишется серверное приложение. При старте оно должно запускать несколько демонов (через subprocess.Popen), затем должно стартовать несколько своих серверов на разных портах (twisted.internet.reactor), а потом ещё слушать свою консоль на ввод команд.
Первая проблема в неблокирующем запуске нескольких демонов, так как они стартуют независимо и сами по себе, но к ним тоже надо получить доступ (читать и писать в их консоль), а multiprocessing.Process.join() вызывает блокировку вызывающего потока.
Вторая проблема в том, что по логике главным потоком должен быть слушатель серверной консоли, но twisted.internet.reactor не запускается из дочерних потоков, то есть трюк вида
 
Код:
def startServer():
    reactor.listenTCP(8000,myFactory())
    reactor.run()

p = Process(target=startServer)
p.start()
p.join()
не работает. А основную консоль слушать из дочернего потока не очень хорошо.
А в третьих, нужно сделать выход. При этом выход должен вызываться как из консоли сервера, так и из одного из инет-серверов. При этом должны посылаться разные команды к демонам (и не SIGTERM, то есть простой terminate() не катит), так и завершаться все инет-сервера (и тогда по идее сервер, из которого вызывали завершение, должен будет завершиться последним).
Что тут можно сделать (логику приложения пока поменять тоже возможно)?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог