2011-03-09 12 views
8

Web.py uygulamamı dotcloud'a dağıtmaya çalışıyorum, ancak nasıl yapılacağını anlayamıyorum. http://docs.dotcloud.com/static/tutorials/firststeps/wsgi ile dotcloud üzerinde Web.py

Sonra

piton servisi WSGI standardı ile uyumlu herhangi bir piton web uygulaması barındırabilir ... http://docs.dotcloud.com/static/components/python/ baktı:

Bu öğretici sesi iyi gitti. Tüm modern Python web çerçeveler içeren

: Django, Pylons, web.py, web2py vb

... Nginx + uWSGI, supervisord tarafından yönetilen ile

piton çalışır. statik varlıkları daha yüksek performans için doğrudan Nginx tarafından sunulmaktadır.

...

DotCloud uygulamanızı oluşturmak için köklü araçları ve kuralları dayanır. Herhangi bir uygulamanın DotCloud'da çalışması için uyarlanması önemsiz olmalıdır.

...

uygulamanızı dağıtırken, DotCloud bir dosya adı verilen wsgi.py. arar

Uygulama dizininizin kökünde bu dosyayı oluşturduğunuzdan emin olun. .


Googling "web.py WSGI" talimatların oldukça şaşırtıcı dizi vardır http://webpy.org/install yol açar. Sayfada birkaç öneride bulundum, ancak işe yaramayacak bir şey bulamadım.

import web 

urls = (
    '/(.*)', 'hello' 
) 

class hello:  
    def GET(self, name): 
    if not name: 
     name = 'World' 
    return 'Hello, ' + name + '!' 

app = web.application(urls, globals(), autoreload=False) 
application = app.wsgifunc() 

Ben de yanında bir boş __init__.py oluşturuldu:

en umut verici umudu şöyle wsgi.py adlı bir dosya oluşturarak gibiydi.

Sonra yaptı:

dotcloud create jca_hello.py 
dotcloud deploy -t python jca_hello.www 
dotcloud push jca_hello.www . 

Ama şimdi http://www.jca_hello.dotcloud.com/ gittiğimde gördüğüm geçerli:

Herhangi

bulundu

uWSGI Hata

WSGI uygulaması değil fikir?

cevap

13

Ben web.py ait dost kullanıcısıyım ve ben Biz WSGI uygulamayı çalıştırmak için uWSGI kullanmak

:-) bu arada DotCloud çalışıyorum. Asıl nokta, uWSGI'nın "application" adlı bir değişken aradığıdır.

app = web.application(urls, globals()) 

if __name__ == '__main__': 
    app.run() 
else: 
    web.config.debug = False 
    application = app.wsgifunc() 

Yani hem yerel makinenizde uygulamanızı kullanmaya devam edebilirsiniz: İşte

Genellikle ne olduğunu

$ python ./wsgi.py 

Ve tabii DotCloud üzerinde (üretim itin; Hata ayıklama modu devre dışı. İşte

sizin wsgi.py dosya düzeltilir:

import web 

urls = (
    '/(.*)', 'Hello' 
) 

class Hello(object): 

    def GET(self, name): 
     if not name: 
      name = 'World' 
     return 'Hello, ' + name + '!' 

app = web.application(urls, globals()) 

if __name__ == '__main__': 
    app.run() 
else: 
    web.config.debug = False 
    application = app.wsgifunc() 

doğru sakının sizin AppRoot içinde wsgi.py sahip. Ayrıca

Bir içeren senin AppRoot içinde "requirements.txt" adlı dosya olduğundan emin olun: Bu arada

web.py 

Eğer dağıtımları ile herhangi bir sorun varsa DotCloud destek ile iletişime geçmekten çekinmeyin .

+1

Harika. İşe yarıyor. Ben 2 saat içinde bir dotcloud dev bir ayrıntılı cevap almak için beklemiyordum söylemeliyim :) –

+0

orijinal soruda zaten 'uygulama' değişkeni var. yok hayır? – skyork