Python 2 Проблемы с запуском HTTP и HTTPS сервера в разных потоках - PullRequest
0 голосов
/ 26 апреля 2018

Я запускаю остановленный http сервер для тестирования на локальном хосте в python2.7 (Ubuntu 16.04). Кроме того, я хотел бы иметь сервер https , поэтому я попробовал следующий код

try:
  start_new_thread(httpd.serve_forever())
  start_new_thread(httpsd.serve_forever())
except KeyboardInterrupt:
  print("\nClosing the service...")

httpd и httpsd имеют тип BaseHTTPServer.HTTPServer и прослушивают 3000 (http) и 3001 (https). Для https используется самозаверяющий сертификат. Каждый сервер работает правильно , если тестируется отдельно, но с приведенным выше кодом, только первый запущенный серверный поток (в нашем случае httpd ) работает в многопоточном режиме и доставляет данные. Сервер во втором потоке просто не отвечает ни на один запрос ...

Может кто-нибудь сказать мне, что не так с фрагментом выше? Или в противном случае показать мне решение, основанное на подходе выше? Cheers,

1 Ответ

0 голосов
/ 27 апреля 2018

Понял; ответ на мою проблему согласно этой проблеме таков: вместо

try:
  start_new_thread(httpd.serve_forever())
  start_new_thread(httpsd.serve_forever())
except KeyboardInterrupt:

Я должен использовать истинный неблокирующий указатель на функцию

thread1 = Thread(target = httpd.serve_forever) # Without ()
thread2 = Thread(target = httpsd.serve_forever) # Without ()
try:
  thread1.start()
  thread2.start()
except KeyboardInterrupt:

Смешно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...