Cherrypy服务器无法从localhost以外的任何地方访问
我在使用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()
2 个回答
3
如果你在使用双栈操作系统,可能会出现localhost解析为::1(IPv6的本地地址),而不是127.0.0.1(IPv4的本地地址)。你可以试着用http://127.0.0.1:8080来访问服务器。
另外,如果你的操作系统支持双栈,你可以把server.socket_host设置为'::',这样它就会同时监听IPv6和IPv4的所有地址。
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}
}
更具体来说,你的字典定义里缺少了逗号和冒号。每一对键和值之间必须有一个冒号,而且它们之间要用逗号分开。像这样可能就能正常工作:
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的字典文档。