Я пытаюсь написать программу, которая изменяет содержимое веб-страницы с некоторыми параметрами, заданными пользователем. После нескольких попыток и некоторого googling мне удалось получить некоторые результаты (я поместил веб-сервер в поток, чтобы продолжить другие задачи в основной рутине). Это, кажется, бежит довольно гладко в окнах, но я всегда получалКак я могу безопасно обновлять обработчик BaseHTTPServer под Linux?
socket.error: [Errno 98] Address already in use
, когда я пытаюсь это с моей Linux машины (все это должно работать на raspian в конце).
Я прочитал что-то here, объясняющее, что опция сокета SO_REUSEADDR (я думаю, что это касается) имеет разные типы поведения между различными ОС (и, если я не понял, он «работает» на Windows благодаря ошибке) но я не могу найти решение, чтобы заставить его работать таким образом в Linux, для этого параметра по умолчанию уже установлено значение True.
Вот упрощенная абстрактная кода, который генерирует ошибку:
import web
probe = raw_input("1st content: ")
web.web(probe)
probe = raw_input("2nd content: ")
web.web(probe)
raw_input()
с этим модулем (web.py)
# -*- coding: utf8 -*-
def web(text):
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SocketServer import ThreadingMixIn
import threading
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(bytes(text.encode('utf-8')))
self.wfile.close()
return
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
allow_reuse_address = True
server = ThreadedHTTPServer(('', 8080), Handler)
print 'Now serving, use <Ctrl+C> to break'
thread = threading.Thread(target = server.serve_forever)
thread.daemon = True
thread.start()
Есть ли реальное решение, чтобы избавиться от этой ошибки? Или есть лучший способ управлять обработчиком в orger, чтобы добиться моей цели?
EDIT: ошибка возникает после ввода «второго содержимого». Первый экземпляр работает безупречно, поэтому я могу точно сказать, что сокет не используется ничем другим.
Спасибо всем!
Спасибо за ваш ответ, но я заверяю вас, что разъем не используется. –