Я использую много веб-серверов на одной машине для тестирования. Вместо того, чтобы иметь дело с конфликтами портов сервера, я хотел бы, чтобы серверы просто запрашивали ОС для доступного порта, а затем рассказывали мне, что они получили.Могу ли я получить CherryPy, чтобы найти свой собственный доступный порт?
Я могу передать порт обратно вызывающему, выполнив вход в консоль или записывая в указанный временный файл (еще не уверен), но знание номера порта является сложной частью.
В настоящее время на основе сервер WSGI вводится в действие с:
cherrypy.quickstart(dev_server, config=_GetConfig(options))
Конфиг будет содержать следующее:
{ 'global':
{ <snip>
'server.socket_host': '0.0.0.0',
'server.socket_port': int(options.port)
},
<snip>
}
Есть ли способ сделать это с CherryPy?
Я предполагаю, что я могу установить порт на «0», чтобы он был автоматически выбран, но это не дает мне способ сообщить об этом.
Как вы хотите, чтобы они рассказали вам, что они получили? Печать на консоль? Войдите в syslog? Записать его в файл запуска? Подключиться к некоторому главному серверу и отправить его через некоторый API? – abarnert
Есть ли много веб-серверов, конкурирующих за порт? Цикл, который пробует порт случайно, найдет один после нескольких раундов. Но не думайте об этом цикле, прежде чем вы получите ответ на комментарий @abarnert. – ixe013
Также расскажите, как вы запускаете сервер (ы) и как их настраиваете, потому что у CherryPy много гибкости. – abarnert