- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法使用具有公共(public) IP 地址的 EC2 Ubuntu Linux 12.04 实例启动 bottle.py 服务器。该程序(hw.py)来自 bottle tutorial ie。
from bottle import route, run
@route('/hello')
def hello():
return 'hello world'
run(host='xxx.xxx.xxx.xxx', port=80)
运行方式:
> python hw.py
or
> sudo python hw.py
产生错误:
Traceback (most recent call last):
File "hw.py", line 7, in <module>
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
EC2 公共(public) IP 地址未附加到任何其他进程。端口 80 未附加到另一个进程。
> 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
改为:run(host='xxx.xxx.xxx.xxx', port=8080)
错误是socket.error: [Errno 99] Cannot assign requested address.
改为:run(host='0.0.0.0', port=8080)
... 将服务器绑定(bind)到所有 IP/接口(interface)。在浏览器中输入 EC2 公共(public) IP 地址(带或不带:8080)都会显示“此页面不可用”。
理想情况下,第一个选项即。 run(host='xxx.xxx.xxx.xxx', port=80) 应该可以正常工作,因为其他 Web 服务器就是这样启动的。有人知道如何解决这个问题吗?
编辑:添加来自 strace -f 的最后一组行:
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) = ?
最佳答案
试试这个。我用它来测试网络。
from bottle import Bottle, run
app = Bottle()
@app.route('/')
def index():
return 'Service Running'
run(
app, # Run |app| Bottle() instance
host = '0.0.0.0',
port = 8080,
reloader = True, # restarts the server every time edit a module file
debug = True # Comment out it before deploy
)
在你的服务器后台运行这个文件(hw.py):
$ cd path/to/your/file
$ nohup python server.py &
那我想你现在可以访问了。
Changing to: run(host='0.0.0.0', port=8080)
... 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".
如果出现这种错误,我认为你需要在根 URL 的末尾使用 /hello
进行访问。
关于python - EC2,bottle.py 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760109/
我正在开发一个基于 Python 的应用程序(HTTP -- REST 或 jsonrpc 接口(interface)),它将用于生产自动化测试环境。这将连接到运行所有测试脚本的 Java 客户端。即
我正在关注Recipes的bottle框架。 当我尝试下面的代码时 #filename: mywebapp.py from bottle import Bottle, run, request app
我通常使用method version处理 Bottle 中的路由 bottle.route("/charge", "GET", self.charge) bottle 文档严重依赖 @route 装
如何在 Bottle 框架中执行基本身份验证?在 flask 中我曾经: def check( username, password ): # This function is called
是否可以在同一应用程序(同一端口)中托管一个普通 Bottle 应用程序和一个 WebSocket 应用程序(例如: https://github.com/defnull/bottle/blob/ma
我有使用 python 2.7.2、bottle 0.10.9 和“瑞士军刀” scrapy 0.14.1 编写的简单 REST API。 简单来说,只有一种方法 (myserver:8081/dop
嗨,有没有办法优雅地关闭 Bottle 服务器。在某种程度上,它应该能够在最终停止之前执行几个步骤。这对于线程和数据库状态等的一些清理至关重要,以避免重新启动期间的损坏状态。 我正在使用 mod ws
我正在尝试让服务器发送事件在Python中工作,所以我找到了一些演示代码,令我惊讶的是,它只部分工作,我不明白为什么。我从here获取代码并进行了一些小的更改,这样我就可以看到什么在起作用(我包括了一
有没有办法让我的网站可以通过我所连接的网络访问? from bottle import route, run, template @route('/hello/') def index(name):
如果我直接从 Bottle 导入 post、get 和 jinja2_view,我就可以使用 jinja2_view 作为装饰器: from bottle import get, post, requ
我正在尝试将 Bottle.py 作为脚本内的进程运行,但我很沮丧,因为它没有按我的预期工作。这是我的脚本的假设/简化表示。我尝试添加尽可能多的评论。 magball.py import serial
(免责声明:我正在发现 python) 使用以下代码: @route('/test', method='POST') def index_view(): image = request.fil
我有一个 Bottle 服务器在端口 8080 上运行,使用“gevent”服务器。我使用这个服务器来支持一些简单的“服务器发送事件”。 我的问题可能与不知道我的设置是如何工作有关。我希望有人能花时间
我最近接触了 Bottlepy,这几乎是我第一次使用模板引擎。(之前我会简单地用传统 PHP 制作我需要的东西) 我的问题是这样的,假设我有一个基本布局(一个简单的 HTML/CSS 布局),并且,例
我如何管理 Bottle 中的多个应用程序,一次运行? 应用 0 from bottle import Bottle app0 = Bottle() @app0.route('/app0/') def
我将 bottle 用于一个显示日历并允许用户指定年份和月份的简单应用。定义了以下路由: '/' # 当前年份和当前月份 '/year' #年和当月 '/year/month' #年月 但是,无法识别
我正在使用 Bottle 框架。我已经设置了 @error 装饰器,所以我能够显示我自定义的错误页面,如果发生任何 500 错误我也可以发送电子邮件,但我需要在电子邮件中发送完整的回溯。有谁知道如何将
我有这样的目录结构: . ├── controller │ ├── FooController.py │ ├── __init__.py │ ├── main.py FooController
我在 bottle 中使用 html,在“index.html”中我导入外部 JS 和 CSS。 但是加载页面时,找不到css和js。 我的项目结构: testBottle.py 中的代码: impo
嗨,我是 python 和 bottle 的新手 我有一个网站 这是结构 |root index.py |classes session.py 如何从 index.py 访问
我是一名优秀的程序员,十分优秀!