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.
burası, yardımcı olacaktır.
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.
Bildiğim kadarıyla, aynı anda birden fazla isteği işleyemiyor. Bunun için bir wsgi sunucu üzerine kurulması tavsiye ediliyor.
Hepinize ilgi ve alakanız için teşekkür ederim