2013-01-21 19 views
13

Jak określić adres nasłuchiwania i port w web.py? Coś jak:web.py - podaj adres i port

web.application(urls, host="33.44.55.66", port=8080) 

Edit

Chciałbym uniknąć za pomocą wiersza polecenia domyślne web.py parsowania

Odpowiedz

22

Od API docmentation z web.py:

module web.httpserver 
    function runsimple(func,server_address=('0.0.0.0', 8080))

Runs CherryPy serwer WSGI gospodarzem WSGI aplikacji func. Katalog static/jest hostowany statycznie.

Przykład kodu

import web 

class MyApplication(web.application): 
    def run(self, port=8080, *middleware): 
     func = self.wsgifunc(*middleware) 
     return web.httpserver.runsimple(func, ('0.0.0.0', port)) 

if __name__ == "__main__": 
    app = MyApplication(urls, globals()) 
    app.run(port=8888) 
12

Jeśli używasz web.py wbudowanego serwera WWW, można po prostu dołączyć do portu z poleceniem:

python app.py 8080 

nie próbowałem nigdy z adresem odsłuchu, ale być może będzie to zaakceptować 1.2.3.4:80 80 jako format.

+0

Idź od intuicji, akceptuje też adres. Chociaż chciałbym użyć mojego własnego parsowania i nie mieszać go z domyślnym parserem wiersza poleceń web.py –

+0

Czy chcesz uruchomić go z "normalnego" serwera WWW, takiego jak Apache czy coś takiego? Jeśli tak jest, będziesz musiał się bawić konfiguracją Apache, aby ustalić, który zestaw adresów/portów powinien wskazywać twój skrypt. – Dan

2
if __name__ == "__main__": 
    web.httpserver.runsimple(app.wsgifunc(), ("0.0.0.0", 8888)) 
3

można zobaczyć kod podążać wsgi.py:

server_addr = validip(listget(sys.argv, 1, '')) 
if os.environ.has_key('PORT'): # e.g. Heroku 
    server_addr = ('0.0.0.0', intget(os.environ['PORT'])) 

return httpserver.runsimple(func, server_addr) 

więc można ustawić port serwera przez zmienną add environ:

import os 
os.environ["PORT"] = "80"