I would like to write Python script that would:
- Start SimpleHTTPServer on some port
- Make a request to the server and send some data via POST
- Run script via shell in interactive mode and interact with it
Right now the code looks like this:
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()
The problem is that once I run my script
python -i foo.py
It prints serving at port 8000
and then freezes. I bet this is something trivial for Python gurus here, but help would be appreciated.
Run the server as a different process, that will allow you to run the rest of your script.
I would also rather use requests than urllib.
Alternatively run it in the separate
thread
: