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

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

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

【问题讨论】:

    标签: python cherrypy


    【解决方案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
      猜你喜欢
      • 2018-05-20
      • 1970-01-01
      • 2019-06-03
      • 2019-06-24
      • 1970-01-01
      • 2019-07-03
      • 2013-10-20
      • 2012-11-28
      相关资源
      最近更新 更多