Note that there are some explanatory texts on larger screens.

plurals
  1. POEC2, bottle.py connection
    primarykey
    data
    text
    <p>Not able to launch a bottle.py server using an EC2 Ubuntu Linux 12.04 instance with a public IP address. The program (hw.py) is from the bottle tutorial ie.</p> <pre><code>from bottle import route, run @route('/hello') def hello(): return 'hello world' run(host='xxx.xxx.xxx.xxx', port=80) </code></pre> <p>Run as:</p> <pre><code>&gt; python hw.py or &gt; sudo python hw.py </code></pre> <p>generates the error:</p> <pre><code>Traceback (most recent call last): File "hw.py", line 7, in &lt;module&gt; run(host='xxx.xxx.xxx.xxx', port=80) File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 2700, in run server.run(app) File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 2382, in run srv = make_server(self.host, self.port, handler, **self.options) File "/usr/lib/python2.7/wsgiref/simple_server.py", line 144, in make_server server = server_class((host, port), handler_class) File "/usr/lib/python2.7/SocketServer.py", line 408, in __init__ self.server_bind() File "/usr/lib/python2.7/wsgiref/simple_server.py", line 48, in server_bind HTTPServer.server_bind(self) File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind SocketServer.TCPServer.server_bind(self) File "/usr/lib/python2.7/SocketServer.py", line 419, in server_bind self.socket.bind(self.server_address) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 99] Cannot assign requested address </code></pre> <p>The EC2 public IP address is not attached to any other process. Port 80 is not attached to another process.</p> <pre><code>&gt; sudo netstat -lp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:ssh *:* LISTEN 629/sshd tcp6 0 0 [::]:ssh [::]:* LISTEN 629/sshd udp 0 0 *:bootpc *:* 463/dhclient3 Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 7190 667/dbus-daemon /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 5888 1/init @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7312 741/acpid /var/run/acpid.socket unix 2 [ ACC ] SEQPACKET LISTENING 26855 21843/udevd /run/udev/control </code></pre> <p>Changing to: run(host='xxx.xxx.xxx.xxx', port=8080)</p> <p>The error is socket.error: [Errno 99] Cannot assign requested address.</p> <p>Changing to: run(host='0.0.0.0', port=8080)</p> <p>... which binds the server to all IPs/interfaces. Typing the EC2 public IP address into browser with and without :8080 displays a "This page is not available".</p> <p>Ideally, the first option ie. run(host='xxx.xxx.xxx.xxx', port=80) should work as that is how other web servers are kicked-off. Anyone have ideas how to solve this one?</p> <p>EDIT: added last set of lines from strace -f:</p> <pre><code>write(2, " File \"/usr/lib/python2.7/Socke"..., 70 File "/usr/lib/python2.7/SocketServer.py", line 419, in server_bind ) = 70 open("/usr/lib/python2.7/SocketServer.py", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=23321, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f434cbfe000 read(4, "\"\"\"Generic socket server classes"..., 4096) = 4096 read(4, "service) is to maintain an\nexpli"..., 4096) = 4096 read(4, "set()\n\n def shutdown(self):\n "..., 4096) = 4096 read(4, "n't use serve_forever()\n - fi"..., 4096) = 4096 write(2, " ", 4 ) = 4 write(2, "self.socket.bind(self.server_add"..., 38self.socket.bind(self.server_address) ) = 38 close(4) = 0 munmap(0x7f434cbfe000, 4096) = 0 write(2, " File \"/usr/lib/python2.7/socke"..., 57 File "/usr/lib/python2.7/socket.py", line 224, in meth ) = 57 open("/usr/lib/python2.7/socket.py", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0644, st_size=20485, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f434cbfe000 read(4, "# Wrapper module for _socket, pr"..., 4096) = 4096 read(4, "oo long.\"\n errorTab[10064] = "..., 4096) = 4096 write(2, " ", 4 ) = 4 write(2, "return getattr(self._sock,name)("..., 39return getattr(self._sock,name)(*args) ) = 39 close(4) = 0 munmap(0x7f434cbfe000, 4096) = 0 write(2, "socket", 6socket) = 6 write(2, ".", 1.) = 1 write(2, "error", 5error) = 5 write(2, ": ", 2: ) = 2 write(2, "[Errno 99] Cannot assign request"..., 42[Errno 99] Cannot assign requested address) = 42 write(2, "\n", 1 ) = 1 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f434c7d1cb0}, {0x41d920, [], SA_RESTORER, 0x7f434c7d1cb0}, 8) = 0 close(3) = 0 exit_group(1) = ? </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload