2

我遇到了一个看起来已经解决但不起作用的cherrypy问题。我只能在 localhost 或 127.0.0.1 上绑定。Windows XP Home 和 Mac OS X(Linux 未经测试),cherrypy 3.1.2,python 2.5.4。这是我的应用程序的结尾:

global_conf = {
       'global':    { 'server.environment= "production"'
                      'engine.autoreload_on : True'
                      'engine.autoreload_frequency = 5 '
                      'server.socket_host': '0.0.0.0',
                      'server.socket_port': 8080}
    }
cherrypy.config.update(global_conf)
cherrypy.tree.mount(home, '/', config = application_conf)
cherrypy.engine.start()
4

2 回答 2

7

呵呵,你的听写有问题:

>>> global_conf = {
...        'global':    { 'server.environment= "production"'
...                       'engine.autoreload_on : True'
...                       'engine.autoreload_frequency = 5 '
...                       'server.socket_host': '0.0.0.0',
...                       'server.socket_port': 8080}
...     }
>>> print global_conf
{'global': 
   {'server.environment= "production"engine.autoreload_on : Trueengine.autoreload_frequency = 5 server.socket_host': '0.0.0.0',
    'server.socket_port': 8080}
}

更具体地说,您的 dict 定义中缺少逗号和冒号。每个键/值对必须有一个冒号,并用逗号分隔。像这样的东西可能会起作用:

global_conf = {
       'global':    { 'server.environment': 'production',
                      'engine.autoreload_on': True,
                      'engine.autoreload_frequency': 5,
                      'server.socket_host': '0.0.0.0',
                      'server.socket_port': 8080,
                    }
              }

查看 python字典文档以获取更多信息。

于 2009-10-12T16:44:13.260 回答
3

如果您使用的是双栈操作系统,则 localhost 可能正在解析为 ::1(IPv6 本地主机)而不是 127.0.0.1(IPv4 本地主机)。尝试使用http://127.0.0.1:8080访问服务器。

此外,如果您使用的是支持双栈的操作系统,您可以将 server.socket_host 设置为 '::',它会侦听 IPv6 和 IPv4 中的所有地址。

于 2009-10-21T15:44:15.240 回答