Yanıtlar:
WSGI, Python yorumlayıcısını web sunucusu başlangıcında, web sunucusu işleminin bir parçası olarak (gömülü mod) veya ayrı bir işlem (arka plan programı modu) olarak çalıştırır ve betiği içine yükler. Her istek, çağrılan kodda belirli bir işlevle sonuçlanır ve istek ortamı işleve bağımsız değişkenler olarak iletilir.
CGI, betiği her istek için ayrı bir işlem olarak çalıştırır ve onunla "iletişim kurmak" için ortam değişkenlerini, stdin ve stdout'u kullanır.
Tamamen geriye dönük bir bakış açısından, Blankman, işte Web Hizmetleri Ağ Geçidi Arayüzü için "Giriş Sayfam":
BİRİNCİ BÖLÜM: WEB SUNUCULARI
Web sunucuları yanıtlar sunar. Oturuyorlar, sabırla bekliyorlar ve sonra hiçbir uyarıda bulunmadan aniden:
Web sunucuları (en azından daha iyileri) bu konuda çok ÇOK iyidir. Talebe bağlı olarak işlemlerin ölçeğini artırıyor ve küçültüyorlar, en gevşek müşterilerle gerçekten kirli ağlar üzerinden güvenilir bir şekilde görüşmeler yapıyorlar ve bu konuda asla endişelenmemize gerek yok. Sadece hizmet etmeye devam ediyorlar.
Demek istediğim şu: web sunucuları tam da bu: sunucular. İçerik hakkında hiçbir şey bilmiyorlar, kullanıcılar hakkında hiçbir şey bilmiyorlar, aslında nasıl çok bekleyip güvenilir bir şekilde cevap vereceklerinden başka bir şey bilmiyorlar.
Web sunucusu seçiminiz, yazılımınızı değil, teslimat tercihinizi yansıtmalıdır. Web sunucunuz hizmetten sorumlu olmalıdır, işleme veya mantıksal şeylerden değil.
İKİNCİ BÖLÜM: (PYTHON) YAZILIMI
Yazılım ortalıkta oturmuyor. Yazılım yalnızca yürütme sırasında mevcuttur. Yazılım, ortamındaki beklenmedik değişiklikler söz konusu olduğunda (dosyalar beklediği yerde değil, parametreler yeniden adlandırılıyor vb.) Çok fazla uyumlu değildir. Optimizasyon, tasarımınızın ana ilkesi olmalıdır (elbette), yazılımın kendisi optimizasyon yapmaz. Geliştiriciler optimize eder. Yazılım yürütülür. Yazılım, yukarıdaki 'kasıtlı mırıltı' bölümündeki her şeyi yapar. Herhangi bir şey olabilir.
Yazılım seçiminiz veya tasarımınız, web sunucusu seçiminizi değil, uygulamanızı, işlev seçiminizi yansıtmalıdır.
Bu, dilleri web sunucularına "derlemenin" geleneksel yönteminin acı verici hale geldiği yerdir. Uygulamanıza fiziksel sunucu ortamıyla başa çıkmak için veya en azından, web sunucuları arasında tekdüzelik yanılsaması vermek için çalışma zamanında dahil edilecek uygun bir 'sarmalayıcı' kitaplığı seçmeye zorlanmak için uygulamanıza kod koyarsınız.
Öyleyse WSGI NEDİR?
Peki sonunda WSGI nedir? WSGI, iki yarıya bölünmüş bir kurallar dizisidir . Entegrasyonu memnuniyetle karşılayan herhangi bir ortama entegre edilebilecek şekilde yazılırlar.
Web sunucusu tarafı için yazılan ilk kısım, "Tamam, bir WSGI uygulamasıyla uğraşmak istiyorsanız, yazılım yüklendiğinde şu şekilde düşünecektir. İşte uygulamaya sunmanız gereken şeyler ve burada her uygulamanın sahip olmasını bekleyebileceğiniz arayüzdür (düzen). Üstelik, herhangi bir şey ters giderse, işte uygulama nasıl düşünecek ve nasıl davranmasını bekleyebileceğiniz. "
Python uygulama yazılımı için yazılan ikinci kısımda "Tamam, bir WSGI sunucusuyla uğraşmak istiyorsanız, sunucu sizinle iletişime geçtiğinde şu şekilde düşünecektir. Sunucuya sağlamanız gereken şeyler şunlardır ve işte her sunucunun sahip olmasını bekleyebileceğiniz arayüz (düzen). Üstelik, bir şey ters giderse, işte nasıl davranmanız ve sunucuya söylemeniz gerekenler. "
İşte karşınızda - sunucular sunucular olacak ve yazılımlar yazılım olacak ve işte birinin diğerinin özelliklerini göz önünde bulundurmasına gerek kalmadan mükemmel bir şekilde anlaşabilmelerinin bir yolu. Bu WSGI.
diğer yandan mod_wsgi, Apache'nin WSGI uyumlu yazılımla konuşmasına izin veren bir eklentidir, diğer bir deyişle mod_wsgi, yukarıdaki kural kitabının birinci bölümündeki kuralların Apache'de bir uygulamasıdır .
CGI gelince .... başka birine sorun :-)
Bu alandaki tüm terimler konusunda net değilseniz ve bununla yüzleşelim, kafa karıştırıcı bir kısaltma yüklü olanıdır, ayrıca CGI ile FastCGI ile WSGI'yi tartışan resmi bir python HOWTO biçiminde iyi bir arka plan okuyucusu vardır. üzerinde. Keşke önce okusaydım.
Hem CGI hem de WSGI, programların web isteklerini işlemek için kullanabileceği standart arayüzleri tanımlar. CGI arabirimi, WSGI'den daha düşük bir seviyededir ve sunucunun HTTP isteğinden gelen verileri içeren ortam değişkenlerini ayarlamasını içerir, program çıplak bir HTTP sunucusu yanıtı gibi biçimlendirilmiş bir şey döndürür.
Öte yandan WSGI, programcıların sunucudan bağımsız ve diğer WSGI uygulamalarına (ara katman yazılımı) sarılabilen uygulamalar yazmasına olanak tanıyan Python'a özgü, biraz daha üst düzey bir arabirimdir.