2012-05-20 22 views
7

Bağlam: Ben orta boy şişe uygulaması (10-15 kez) yazıyorum ve bu süreçte, ben kolay yaşatılabilir hale getirecek şekilde kod organize etmek umuyorum ve genişletilebilir (çoğu Flask uygulaması olduğu gibi monolitik bir dosya değildir). Uygulama mimikler olarak documentation aitProcfile gunicorn özel modül adı

yapısı aşağıdaki gibidir:

/AwesomeHackings 
    /ENV 
    /AwesomeHackings 
     /models 
     /static 
     /templates 
     /__init__.py 
     /awesome.py 
     /awesome.cfg 
    /Procfile 
    /README.MD 
    /requirements.txt 
    /run.py 

Sorun: 'uygulama' adlı olmayan bir şişe uygulama ile çalışmak için ustabaşı alamıyor . Run.py uygulamasının giriş noktası olmasını isterim.

Ben gunicorn + gevent kullanıyorum ve benim şimdiki Procfile içerir:

from AwesomeHackings import awesome 
awesome.app.run(debug=True) 

Böylece ben basitçe run yerine varsaymışlardı:

web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run 

Uygulamayı test etmek run.py kullanıyoruz Procfile içinde app, ancak foreman start yürütürken, gunicorn, modüller hakkında anlamsız bir sözel hata ile başarısız olur.

cevap

10

Çözümü Django's documentation içinde buldum. gunicorn ana parametre modüldür: APP_MODULE desen olan

gunicorn [OPTIONS] APP_MODULE

MODULE_NAME:VARIABLE_NAME

sözdizimi bir anahtar kelime argüman uygulaması olması için mantıklı görünüyordu ederken: öğreticiler tüm kullandıkça, someIdentifier app adlı bir modül, aslında durum böyle değil. Durumum için doğru argüman run:app idi.

+0

Çok benzer bir kurulumum var ve neden çalıştırıldığını anlamasam da: app, hala benim için çalışmıyor. Tam olarak ne, awesome.py dosyasında ne var? – Caroline

+0

Bu durumda, awesome.py, uygulama nesnesinin tanımını içerir (ve basit monolitik flask uygulamaları yazdığımda, tüm görünümler, vb.). Tabanca attığınız dizinden 'app' nesnesini nasıl içe aktarırsınız? I.E. foo ithalat uygulamasından. Bu modül, değişken isim kombinasyonu gunicorn'a geçmesi gereken şey. Kurulumunuz hakkında daha fazla bilgi ve ayrıntı sağlayabilir misiniz? E-posta üzerinden yardım etmekten mutluluk duyuyorum (Kullanıcı adımı @ gmail.com) –

+0

Başkalarının ilerideki referansları için. Sorunumu çözdüm ve http://stackoverflow.com/questions/22921187/flask-and-gunicorn-multiple-modules-circular-imports-not-all-routes-accessib adresinde nasıl olduğunu açıkladım. – Caroline