Düzenli HTTP isteklerinde, istemci ve sunucu arasındaki bağlantılar kısa ömürlüdür, bir istemci sunucuya bağlanır, bir istek gönderir, yanıtı alır ve sonra bağlantıyı kapatır. Bu modelde sunucu az sayıda çalışanı kullanarak çok sayıda müşteriye hizmet verebilir. Bu durumdaki eşzamanlılık modeli tipik olarak iş parçacığı, işlemlere veya her ikisinin birleşimine dayanır.
Websocket kullandığınızda, sorun daha karmaşıktır, çünkü bir websocket bağlantısı uzun bir süre açık olduğundan, sunucu çok sayıda istemciye hizmet vermek için küçük bir işçi havuzu kullanamaz, her müşterinin kendi özel çalışanı. Konu ve/veya süreç kullanırsanız çok sayıda ileti dizisine sahip olamayacağınız için uygulamanız çok sayıda müşteriyi destekleyecek şekilde ölçeklenmez.
Gevent, resmin içine girdiği yerdir. Gevent, yeşil ipliklere dayalı eşzamanlılık modeline sahiptir. Bu nedenle, ağ geçidi tabanlı bir sunucuyla web bağlantısı bağlantıları sunmak, yeşil alanların hafif doğası nedeniyle daha fazla müşteriyi desteklemenize olanak tanır. UWSGI ile, web prizleriyle kullanmak için eşzamanlılık modelleri arasından seçim yapabilirsiniz ve bu model, gevent'ten alınan greenlet tabanlı modeli içerir. İsterseniz gevent'in web sunucusunu bağımsız olarak da kullanabilirsiniz.
Ancak, notun web soketleri hakkında hiçbir şey bilmediğini unutmayın, bu yalnızca bir sunucudur. Web bağlantısı bağlantılarını kullanmak için websocket sunucusunun bir uygulamasını eklemeniz gerekir.
Web konsollarının kullanımını basitleştiren Flask için iki uzantı vardır. Kenneth Reitz tarafından yapılan Flask-Sockets uzantısı, gevent ve gevent-websocket için bir sarıcıdır. Flask-SocketIO uzantısı (ben yazar olarak utanmaz fiş) sunucu üzerinde gevent ve gevent-socketio, artı istemci üzerinde Socket.IO için bir sarıcı olduğunu. Socket.IO, eğer mevcutsa web soketini kullanabilen, ancak eski tarayıcılarda diğer taşıma mekanizmalarını da kullanabilen daha yüksek seviye soket protokolüdür.
Umarım bu yardımcı olur!
Kenneth Reitz tarafından "Flask-Sockets" adlı websockets için mükemmel olan bir uzantı var. Buna bir bak. https://github.com/kennethreitz/flask-sockets – codegeek
Teşekkürler, ama aynı zamanda bu karmaşa içinde gevent rolünü bulmakla ilgileniyorum. – ruipacheco
Diyorum ki, bu bir asyncronous. Yani orada tek bir işçi için sadece bir müşteri ile uğraşmak değil. –