如何使用 CherryPy 配置 IP 地址?

Posted

技术标签:

【中文标题】如何使用 CherryPy 配置 IP 地址?【英文标题】:How do I configure the ip address with CherryPy? 【发布时间】:2010-09-12 01:27:30 【问题描述】:

我正在使用 python 和 CherryPy 创建一个大约 2 人使用的简单内部网站。我使用带有 CherryPy.quickstart 的内置网络服务器,并且从不弄乱配置文件。我最近更换了机器,所以我安装了最新的 Python 和cherrypy,当我运行该站点时,我可以从 localhost:8080 访问它,但不能通过 IP 或 Windows 机器名称访问它。这可能是机器配置差异或 CherryPy 或 Python 的较新版本。有什么想法可以绑定到正确的 IP 地址吗?

编辑:为了清楚起见,我目前根本没有配置文件。

【问题讨论】:

【参考方案1】:
import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.server.socket_host = '0.0.0.0' # put it here 
cherrypy.quickstart(HelloWorld())

【讨论】:

【参考方案2】:
server.socket_host: '0.0.0.0'

...也可以。那就是 IPv4 INADDR_ANY,意思是“监听所有接口”。

在配置文件中,语法为:

[global]
server.socket_host: '0.0.0.0'

在代码中:

cherrypy.server.socket_host = '0.0.0.0'

【讨论】:

要么。编辑上述内容以反映这一点。 你为什么需要监听all 接口?你能在这里解释一下吗? 在 docker 容器中很常见。【参考方案3】:

这取决于你如何运行cherrypy init。

如果使用cherrypy 3.1 语法,那就可以了:

cherrypy.server.socket_host = 'www.machinename.com'
cherrypy.engine.start()
cherrypy.engine.block()

当然你可以有更花哨的东西,比如继承服务器类,或者使用配置文件。 the documentation 涵盖了这些用途。

但这应该足够了。如果不只是告诉我们你在做什么和cherrypy版本,我会编辑这个答案。

【讨论】:

在调用cherrypy.quickstart之前我只需要第一行,谢谢 链接失效 关于“使用配置文件”——请注意cherrypy.quickstart(application(), config = configfile) 可以将可选配置文件作为第二个参数(例如,在cherrypy教程中它是tutconf),据我所知它将覆盖程序中设置的cherrypy.server.socket_host

以上是关于如何使用 CherryPy 配置 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CherryPy 的 POST 请求中接收 JSON?

如何给linux系统配置ip地址

如何从一个简单的网络应用程序中注销。在 CherryPy,Python

如何使用cherrypy tree.mount指定侦听服务器实例?

如何从运行尽可能快的 CherryPy BackgroundTask 返回数据

如果 IP 地址已配置,如何使用 Powershell 脚本检查