Flask WARNING: This is a development server. Do not use it in a production deployment

Merhabalar. Flask ile web ortamı geliştirmek istiyorum ve sorunsuzca çalışıyor ama bu uyarının tam olarak ne dediğini anlayamadım açarsanız(Daha ayrıntılı) anlatırsanız sevinirim.
Uyarı:
WARNING: This is a development server. Do not use it in a production deployment.

Flask’ı localhost’ta çalıştırıyorsunuz, web uygulamanızı yerel makinenizde geliştirdiğiniz için bu uyarıyı alıyorsunuz.

Özetle, programınızı şu şekilde çalıştırıyorsunuz sanırım:

app.run(debug=True)

Eğer, web uygulamanızı bir hosting firmasında yayınlarsanız, bu ifadeyi kullanmayacaksınız ve bu uyarıyı da bir daha almayacaksınız. Bu uyarı bir sorun olduğu anlamına gelmiyor.

@dildeolupbiten izninizle, araştırma sonucu elde ettiğim bilgileri paylaşmak istiyorum.

Uyarıyı, flask uygulamasını “üretim” modunda çalıştırdığı için alıyor.
Bir web uygulamasının birden çok kullanıcıdan gelen birden çok eş zamanlı isteği işlemesi beklenir. Flask, varsayılan yerleşik sunucunun bunu yapamayacağını belirtmek için uyarıyor. Üretim modunda iken debug, False edilse bile uyarı alınır. Belgeler
" While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well."

Muhtemelen öyle, henüz basic çalıştıklarını düşünüyorum.

:+1: burası, yardımcı olacaktır.

:+1:

Bu doğru.

Uyarıyı nasıl ortadan kaldırabileceğinizden bahsedelim. Komut satırında flask uygulamasını run etmeden önce, FLASK_ENV ortam değişkenini (varsayılan olarak “production”) “development” yapmalısınız.

Sanırım Windows kullanıcısısınız. Projenizin olduğu dizine gidip bir komut satırı açın. Ardından şöyle devam edin:

set FLASK_ENV=development

Ardından, bu komut penceresinde flask uygulamanızı çalıştırın; uyarı almayacaksınız.

Yalnız, bir problem var. Komut satırını kapattığınızda FLASK_ENV tekrar varsayılan değerine; “production” döner. Yaptığınız değişiklik sadece o komut satırında/terminalde geçerli olur. Peki, FLASK_ENV ortam değişkeninin varsayılan değerini nasıl “development” yapabiliriz? Bunun için en çok kullanılan paketi kullanalım; python-dotenv

  • Öncelikle python-dotenv paketini kurun.
  • Boş bir klasör içerisinde .env isminde bir dosya oluşturun.
  • İçerisine şunu yazıp kaydedin: FLASK_ENV=development
  • Ardından flaskUygulamasi isminde bir Python dosyası oluşturun ve içerisine basic bir flask uygulaması yerleştirin.
  • Son olarak dotenv ile .env dosyasını flask uygulamanız içerisinde kullanın. Şöyle:
# flaskUygulamasi.py



from flask import Flask
from dotenv import load_dotenv
load_dotenv()

app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello!</h1>'

if __name__ == "__main__":
    app.run(debug=True)

Artık FLASK_ENV değişkeninin varsayılan değeri, “development” oldu.

Evet, ben de bunu söylemeye çalıştım ama söylediklerimde “üretim” modu diye bir ifade kullanmadım. Ancak “üretim modu” denmesi yanlış değil. Zaten bildiğiniz gibi “development” üretim demek.

Üretim modunda, flask uygulaması yerel ip adresi üzerinde çalıştığı için ve yerel ip adresi dış dünyaya kapalı olduğu için, sunucu, dışarıdan bir istemci ile iletişime geçemez.

Ancak, kendi bilgisayarınızdan sunucuya erişebilir ve ona istek atabilirsiniz. Eş zamanlı istekler atılabilir mi daha önce hiç denemedim. Ama Flask kullanarak bir socket-server oluşturmuştum. Ve başka bir oturumdan sunucuya veri gönderebiliyor ve sunucudan veri alabiliyordum.

1 Beğeni

Bildiğim kadarıyla, aynı anda birden fazla isteği işleyemiyor. Bunun için bir wsgi sunucu üzerine kurulması tavsiye ediliyor.

1 Beğeni

Hepinize ilgi ve alakanız için teşekkür ederim

1 Beğeni