web.py - 指定地址和端口

Posted

技术标签:

【中文标题】web.py - 指定地址和端口【英文标题】:web.py - specify address and port 【发布时间】:2013-01-04 21:04:24 【问题描述】:

web.py中如何指定监听地址和端口?比如:

web.application( urls, host="33.44.55.66", port=8080 )

编辑

我想避免使用默认的 web.py 命令行解析

【问题讨论】:

【参考方案1】:

来自web.py的API文档:

 模块 web.httpserver
    函数运行简单(func,server_address=('0.0.0.0', 8080)) 

运行托管 WSGI 应用程序功能的 CherryPy WSGI 服务器。目录 static/ 是静态托管的。

示例代码

import web

class MyApplication(web.application):
    def run(self, port=8080, *middleware):
        func = self.wsgifunc(*middleware)
        return web.httpserver.runsimple(func, ('0.0.0.0', port))

if __name__ == "__main__":
    app = MyApplication(urls, globals())
    app.run(port=8888)

【讨论】:

【参考方案2】:

如果您使用的是 web.py 的内置网络服务器,您只需将端口附加到命令:

python app.py 8080

我从未尝试过监听地址,但它可能会接受 1.2.3.4:8080 作为格式。

【讨论】:

很好的直觉,它也接受地址。虽然,我想使用我自己的命令行解析,不要将它与默认的 web.py 命令行解析器混合使用 您的意思是从 Apache 之类的“普通”网络服务器运行它吗?如果是这种情况,您需要使用 Apache 配置来确定哪个地址/端口组合应该指向您的脚本。【参考方案3】:

你可以在wsgi.py中看到如下代码:

server_addr = validip(listget(sys.argv, 1, ''))
if os.environ.has_key('PORT'): # e.g. Heroku
    server_addr = ('0.0.0.0', intget(os.environ['PORT']))

return httpserver.runsimple(func, server_addr)

所以,你可以通过添加环境变量来设置网络服务器端口:

import os
os.environ["PORT"] = "80"

【讨论】:

【参考方案4】:
URLS = ("/", index)

class index:
    def GET:
        ....

if __name__ == "__main__":
     app = web.application(URLS, globals())
     web.httpserver.runsimple(app.wsgifunc(), ("0.0.0.0", 8888))

【讨论】:

以上是关于web.py - 指定地址和端口的主要内容,如果未能解决你的问题,请参考以下文章

怎么让域名解析到指定的端口

在iptables中,如何指定某个IP地址可以访问本机IP的所有端口,同样本机IP的所有端口都访问某个IP地址?

django 在centos 7 下 指定ip地址和端口 报错问题

CISCO-端口安全

iptables只允许指定ip地址访问指定端口

生成树的配置命令