Я хотел бы написать Python скрипт, который будет:Python: запустить SimpleHTTPServer и сделать запрос на него в сценарии
- Start SimpleHTTPServer на некоторый порт
- Сделать запрос на сервер и отправить некоторые данные по POST
- Запуск сценария с помощью оболочки в интерактивном режиме и взаимодействовать с ним
Сейчас код выглядит следующим образом:
import SimpleHTTPServer
import SocketServer
import urllib
import urllib2
# Variables
URL = 'localhost:8000'
PORT = 8000
# Setup simple sever
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
# Getting HTML from the target page
values = {
'name': 'Thomas Anderson',
'location': 'unknown'
}
data = urlilib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
html = response.read()
Проблема заключается в том, что когда я бегу мой сценарий
python -i foo.py
serving at port 8000
Он печатает, а затем замерзает. Бьюсь об заклад, это что-то тривиальное для гуру Python здесь, но помощь будет оценена.
Спасибо, это то, что я искал, но не мог получить из-за предела питон-опыта. – Oleg
Одна вещь, которую я заметил, является ошибкой при попытке выполнить это: socket.error: [Errno 10048] Только одно использование каждого адреса сокета (протокол/сетевой адрес/порт) обычно разрешает ted – Oleg
Это, скорее всего, из-за того, что вы не закрываете свой http-сервер, по крайней мере, в вашем примере. Пожалуйста, см. Мой ответ для более подробной информации. –