Yanıtlar:
flask.Flask.run**optionsileriye dönük ek anahtar kelime argümanlarını ( ) kabul eder werkzeug.serving.run_simple- bu argümanlardan ikisi threaded(boolean) ve processes(werkzeug'un istekleri işlemek için birden fazla işlem üretmesi için birden fazla sayıya ayarlayabilirsiniz).
threadedTrueFlask 1.0'dan itibaren varsayılan olarak kullanılır, bu nedenle Flask'ın en son sürümleri için, varsayılan geliştirme sunucusu varsayılan olarak aynı anda birden fazla istemciye hizmet verebilir. Flask'ın daha eski sürümlerinde, threaded=Truebu davranışı etkinleştirmek için açıkça geçebilirsiniz .
Örneğin,
if __name__ == '__main__':
app.run(threaded=True)
eski Flask sürümleriyle uyumlu bir şekilde iş parçacıklarını kullanarak birden çok istemciyi ele almak veya
if __name__ == '__main__':
app.run(threaded=False, processes=3)
Werkzeug'a gelen talepleri karşılamak için üç süreç ortaya koymasını söyleyin, ya da sadece
if __name__ == '__main__':
app.run()
Flask 1.0 veya üstünü kullanacağınızı biliyorsanız, birden çok istemciyi iş parçacıkları kullanarak işleme.
Bununla birlikte, Werkzeug'un serving.run_simplestandart kütüphanenin wsgirefpaketini tamamladığını ve bu paketin üretime hazır bir web sunucusu değil, WSGI'nin referans uygulamasını içerdiğini söyledi. Flask'ı üretimde kullanacaksanız ("üretim" in en fazla 10 eşzamanlı kullanıcısı olmayan düşük trafikli bir dahili uygulama olmadığı varsayılarak) gerçek bir web sunucusunun arkasında durduğunuzdan emin olun (Flask dokümanlarının başlıklı bölümüne bakın) Önerilen bazı yöntemler için Dağıtım Seçenekleri ).
app.run()Flask içinden simple öğesini kullanmak, tek seferde yalnızca bir istemciye hizmet verebilen tek bir iş parçacığında tek bir eşzamanlı sunucu oluşturur. Tam da bu nedenle düşük talepli (yani geliştirme, hata ayıklama) kontrollü ortamlarda kullanılmak üzere tasarlanmıştır.
Konuları yumurtlamak ve kendiniz yönetmek, muhtemelen Python GIL nedeniyle sizi çok ileriye götürmeyecektir .
Bununla birlikte, hala iyi seçenekleriniz var. Gunicorn , birden fazla çalışanı (ayrı süreçler, bu yüzden GIL endişesi yok) oluşturmanıza ve hatta uygulamanızı hızlandıracak (ve daha güvenli hale getirecek) asenkron çalışanlarla birlikte gelen sağlam, kullanımı kolay bir WSGI sunucusudur. (özellikle Flask ile) sizin işinizde.
Yine de, Gunicorn bile muhtemelen doğrudan halka açık olmamalıdır. Üretimde, daha sağlam bir HTTP sunucusunun arkasında kullanılmalıdır; nginx , Gunicorn ve Flask ile iyi gitme eğilimindedir.
gunicorn app:app 127.0.0.1:8080yerine çalıştırmanıza izin verir python app.py. Nginx özel Gunicorn işletilen uygulamasını ortaya kamu hizmeti olarak hareket edecek (Bir ters proxy) belki vs. doğrudan statik sunum dosyalarını, alt düzey HTTP uygulama ayrıntıları her türlü gizleme,
processes=100ve ondan mutlu olabilir miyim ? Benim durumumda, sadece statik dosyalara ihtiyacım var, HTTP Post yöntemlerine gerek yok. Benim gereksinimim, tüm Flask iş parçacıklarını ana uygulamamın bir parçası olarak çalıştırmak istiyorum, böylece hepsi değişkenleri paylaşabilir.