SORU
21 Ocak 2012, CUMARTESİ


Şişeyi bir uygulama hata ayıklaması Gunicorn çalışan

Yeni dev bir platform/gunicorn nginx kullanarak üzerinde çalıştığım ve benim için uygulama Şişesi.

Ops-bilge, her şey gayet iyi çalışıyor - yaşıyorum sorunu Şişesi katmanı için hata ayıklama. Benim kodunda bir hata var, ben sadece düz 500 hatası tarayıcı döndü ve hiçbir şey ya da benim günlükleri konsolda gösterir.

Ben sanırım farklı yapılandırmaları/seçenekler.. ben çok denedimgerekireksik bir şey belli olacak.

Benim gunicorn.conf:

import os

bind = '127.0.0.1:8002'
workers = 3
backlog = 2048
worker_class = "sync"
debug = True
proc_name = 'gunicorn.proc'
pidfile = '/tmp/gunicorn.pid'
logfile = '/var/log/gunicorn/debug.log'
loglevel = 'debug'

Bazı Şişesi kod örneği bu borks - testserver.py:

from flask import Flask
from flask import render_template_string
from werkzeug.contrib.fixers import ProxyFix

app = Flask(__name__)

@app.route('/')
def index():
    n = 1/0
    return "DIV/0 worked!"

Ve son olarak, gunicorn içinde matara uygulamayı çalıştırmak için komut:

gunicorn -c gunicorn.conf.py testserver:app

Teşekkürler hepinize

CEVAP
19 Aralık 2012, ÇARŞAMBA


Kabul edilme çözüm benim için işe yaramıyor.

Gunicorn önceden ayrılan bir çevre ve görünüşe göre the Flask debugger doesn't work in a forking environment.

Dikkat

Etkileşimli hata ayıklayıcı çalışmıyor bile ortamlar neredeyse imkansız kullanmak için yapar (çatallaşma sunucular üretim) [...]

Eğer app.debug = True, ayarlarsanız bile hala tek mesaj ile boş bir sayfa alacaksınızİç Sunucu Hatasıeğer gunicorn testserver:app ile çalıştırın. Gunicorn ile yapabileceğiniz en iyi gunicorn --debug testserver:app ile çalıştırmak için. Buna ek olarak, izleme sağlarİç Sunucu Hatasımesaj. Ancak, bu terminal ve yüzünüz için hata gördüğünüz sadece aynı mesajı bulmak.

Bu testserver.py if __name__ ... bölümüne ekleme ve python testserver.py geliştirme sunucusunu başlatmak için çalışan Şişesi hata olur.Diğer bir deyişle, Eğer Şişeyi hata ayıklayıcı istiyorsanız gelişiminde gunicorn kullanmayın.

app = Flask(__name__)
app.config['DEBUG'] = True

if __name__ == '__main__':
    app.run()


Heroku kullanıcıları için ipucu:

Şahsen ben hala it sets up all the env variables for me beri foreman start yerine python testserver.py kullanmak gibi. Bu işe almak için:

Procfile içeriği

web: bin/web

bin/web dosya içeriğini projesi köküne göre

#!/bin/sh

if [ "$FLASK_ENV" == "development" ]; then
        python app.py
else
        gunicorn app:app -w 3
fi

Geliştirme, .env bir dosyaya aşağıdaki içeriği (belgeler here) ile proje köküne göre oluşturun

FLASK_ENV=development
DEBUG=True

Ayrıca, dont hata ayıklama modunda Şişesi çalışmayan bir şey testserver.py 25 *satırı değiştirmek için Üretim unut.

app.config['DEBUG'] = os.environ.get('DEBUG', False)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Djbasilio AuToBaSs

    Djbasilio Au

    20 Aralık 2008
  • GUN-TIME with Brandon

    GUN-TIME wit

    3 ŞUBAT 2009
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007