我遇到了一个看起来已经解决但却无法解决问题的问题。我只能绑定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()
答案 0 :(得分:6)
>>> 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 definiton中缺少逗号和冒号。每个键/值对必须有一个冒号,并用逗号分隔。这样的事情可能有用:
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 dictionary documentation以获取更多信息。
答案 1 :(得分:3)
如果您使用的是双栈操作系统,则localhost可能会解析为:: 1(IPv6 localhost)而不是127.0.0.1(IPv4 localhost)。尝试使用http://127.0.0.1:8080访问服务器。
此外,如果您正在使用支持双栈的操作系统,则可以将server.socket_host设置为“::”,它将侦听IPv6和IPv4中的所有地址。