SORU
20 EKİM 2008, PAZARTESİ


Nasıl web çerçeveleri, WSGI ve CGI bir araya Python

CGI olarak Python betikleri çalıştırabilirsiniz Bluehost bir hesabım var. Ben çalıştırmak için .htaccess aşağıdaki tanımlamak zorunda çünkü en basit CGI sanırım:

Options  ExecCGI
AddType text/html py
AddHandler cgi-script .py

Yukarı Python ile web programlama baktığımda şimdi, çoğu çerçeveler kullanmak WSGI hakkında çok şey duydum. Ama ben anlamıyorum nasıl uyuyor birlikte, özellikle benim web sunucusu (Apache çalışan bir ana makine) ve bir şey değil ben gerçekten oynamak (dışında tanımlama .htaccess komutları).

Nasıl WSGI, CGI, ve çerçeveler tüm bağlı? Bilmem gerek, yüklemek, ve eğer bir web çerçevesi (web.py CherryPy say) temel CGI yapılandırması çalıştırmak istersem ne yapmalıyım? Nasıl WSGI destek yüklemek için?

CEVAP
6 ŞUBAT 2009, Cuma


WSGI, CGI, ve çerçeveler bağlı nasıl ?

Apache port 80 dinler. Bir HTTP isteği alır. Yanıt vermek için bir yol bulmak isteği ayrıştırır. Apache yanıt için ÇOK fazla seçenek var. Cevap vermek için bir yolu, bir CGI betiği çalıştırmak için kullanılır. Cevap için başka bir yol sadece bir dosya hizmet etmektir.

CGI durumunda, Apaçi ortamı hazırlar ve CGI protokolü ile komut dosyası çağırır. Bu yuva ve stdout de dahil olmak üzere Unıx Fork/Exec standart durumu CGI bir alt işlemi devralır bir işletim sistemi ortamıdır. CGI alt işlemi geri Apache giden bir cevap yazar; Apache, tarayıcıya bu yanıtı gönderir.

CGI ilkel ve sinir bozucu. Her istek için bir alt işlemi çatal ve alt işlemi veya stdout çıkış yakın ve yanıtı sonu belirtmek için stderr gerekir, çünkü çoğunlukla.

WSGI CGI tasarım deseni tabanlı bir arayüz. Mutlaka CGI -- her istek için bir alt işlemi çatal yok değil. CGI olabilir, ama olmak zorunda değil.

WSGI bazı önemli açılardan CGI tasarım deseni ekler. HTTP İsteği için bir başlık ve çevreye bu ekler ayrıştırır. Ortamında dosya gibi bir nesne olarak YAZI odaklı herhangi bir giriş sağlar. Ayrıca yanıt, biçimlendirme bir sürü detay sizi kurtaran formüle bir işlev sağlar.

Ben eğer bir web çerçevesi (ki web.py ya cherrypy) temel CGI yapılandırması hakkında çalıştırmak istiyorsanız / yükleme / ne biliyorsun ?

Bir alt süreci çatallaşma pahalı olduğunu hatırlayın. Bu geçici bir çözüm bulmak için iki yol vardır.

  1. Gömülümod_wsgi mod_python Apache içinde Python gömer; hiçbir işlem yönlüdür. Apache, Django uygulama doğrudan çalışır.

  2. Daemonmod_wsgi mod_fastcgi Apache ayrı bir servis ile etkileşim sağlar (ya da "uzun soluklu") süreci, WSGI protokolünü kullanarak. Uzun süren Django işlemi başlattıktan sonra Apache mod_fastcgi bu işlem ile iletişim kurmak için yapılandırın.

mod_wsgi Her iki modda çalışabilir not: gömülü veya daemon.

Mod_fastcgi, göreceksin o kadar okuyun o zaman Django flup bilgi WSGI uyumlu bir arayüz mod_fastcgi tarafından sağlanan oluşturmak için kullanır. Boru hattı bu gibi çalışır.

Apache -> mod_fastcgi -> FLUP (via FastCGI protocol) -> Django (via WSGI protocol)

Django birkaç "django.çekirdek."çeşitli arayüzleri için. işleyicileri

Mod_fastcgi, Django sağlar FLUP ve işleyicisi entegre manage.py runfcgi.

İçin mod_wsgi, bu temel bir işleyici yok.

Nasıl WSGI destek yüklemek için ?

Bu talimatları izleyin.

http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

Arka plan için bkz

http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009