2009-10-12 102 views
2

我有一個櫻桃問題看起來已解決,但不起作用。我只能在localhost或127.0.0.1上綁定。 Windows XP Home和Mac OS X(linux未經測試),cherrypy 3.1.2,python 2.5.4。這是我的應用程序的結束:Cherrypy服務器不能從任何東西,但本地主機

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

那麼...當你說它「不起作用」時,你是什麼意思? – 2009-10-12 15:48:37

+0

你應該能綁定什麼主機?即你想要發生什麼? – Mark 2009-10-12 16:01:38

回答

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} 
} 

更具體地說,有逗號和冒號從你的字典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, 
        } 
       } 

檢查蟒蛇dictionary documentation獲取更多信息。

3

如果您使用的是雙棧操作系統,可能是localhost解析爲:: 1(IPv6本地主機)而不是127.0.0.1(IPv4本地主機)。嘗試使用http://127.0.0.1:8080訪問服務器。另外,如果您使用的是具有雙堆棧功能的操作系統,則可以將server.socket_host設置爲'::',並且它將偵聽IPv6和IPv4中的所有地址。

相關問題