2011-10-19 15 views
5

ovl olarak adlandırılan scipy.stats.stats (scipy sürüm 0.9.0) 'da yoğun şekilde kullanılan bir pakete django-powered (1.3) arayüzü oluşturma aşamasındayım . Erken geliştirme aşamalarında, djangos kendi geliştirme sunucusunu kullanarak, bu sorun değildi. Apache debian/2.2.9 ve mod_wsgi 3.3 kullanarak konuşlandırdıktan sonra, bu ciddi bir soruna neden olur.Dağıtımdan sonra django'daki scipy.stats.stats öğesini kullanma

Tarayıcıda yüklemeye çalıştığım her hangi bir görünüm olursa, yüklemeye başlar ve 5 dakika (zaman aşımına kadar) ve 500 sayfanın görünmesini sağlar. Sadece scipy işleri içe aktarılıyor, ancak değil, scipy.stats.stats veya scipy.stats kullanılabilir. Bu sürpriz değil; Scipy'nin init .py belgesindeki belgelerinde, stats alt paketinin açıkça içe aktarılması gerektiği belirtilmiştir. Bununla birlikte, aynı (0.10 bunun bir ipython içinde değil herhangi bir sorun olmadan (django kabuk içinde ağ- ve den) Django alır ve gerçekten de dir(scipy) kadar gösterir alt paketin cluster, ilgili söylenen .2) -session, sadece beklemediğim gibi.

Komut dir(scipy); normal ipython kabuğunda (564 dizgiler, hiçbir alt paket cluster) web'den gelen ve (django kabuğunda sürpriz, sürpriz) web'den geldiğinde (cluster alt paketini içeren 568 dizenin bir listesi) farklı sonuçlar döndürür. Django kabuğu scipy'de hem cluster hem de stats paketleri de dahil olmak üzere 570 özelliği vardır. Başka bir şey, eğer scipy.stats bir miktar mesafeden (uygulamanın kendi dosyalarından birinde değil) ithalatı tutarken, ovl -package dosyasını içe aktarmaya devam edersem, bazen ViewDoesNotExist hata mesajı alıyorum. açıkça görünse de, görünüm modülünde metod indeksi yoktur. Hangi bana this hatırlatıyor.

Yani şimdi bunlar oldukça çirkin çözümlerin düşünüyorum:

    o dir (SciPy) 'de 'normal' görünür ve scipy.stats ve ben yoluyla erişilebilir, böylece istatistik paketi almak için
  • Düzenleme scipy init eski kodu kullanabilir.
  • scipy stat alt paketin kapış ve ancak, bu çözümleri uygularken isteksiz olduğum

(bir sembolik bağ kullanılarak) bunun dışında normal bir paket yaparak. Django ortamında scipy içinde ortaya çıkan gerçek küme beni biraz endişelendiriyor. Web'den giriş yaparken www-data kullanıcısı olmakla ilgili bir şey olabileceğini düşündüm, ancak bunu nasıl kontrol edeceğimi bilmiyorum.

Bunu başka biriyle karşılaştı mı? Bunun parçaları mı? Ya da başka türlü yararlı düşünceler?

Başka bir django dağıtımı çalışır.

cevap

5

mod_python, aynı işlemde birden çok Python yorumlayıcısı kullanmayı dener. mod_wsgi aynı şeyi yapıyor olabilir. Bu sık sık işe yarıyor olsa da, bazı uzatma modülleri bunu desteklemiyor. scipy.stats muhtemelen böyle bir uzantı modülünü ithal ediyor. Mod_python altında scipy.stats ile ilgili scipy mail listesi hakkında benzer raporlar aldık. Aynı işlemde birden fazla tercüman kullanmadığı veya uygulama için her işlem için bir yorumlayıcı kullanan farklı bir dağıtım stratejisi bulabilecek şekilde yapılandırıp yapılamayacağını görmek için mod_wsgi belgelerine bakın.

+2

Bu yanıtı kullanarak, googled ve [bu soru] 'u (http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API) ve hem çözüm hem de [açıklama] (http: //) aracılığıyla buldum. code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API). ' \t WSGIApplicationGroup% {GLOBAL} \t Sipariş izin koyarak çözüldü, \t benim httpd.conf tüm \t ' dan izin inkar. İkinci satır, alt tercümanlarla ilgili bir şey yapan çizgidir. – koekiezorro

1

Ayrıca django uygulamasında scipy.stats kullandığımda da bu sorunla karşılaşıyorum. django manage.py runsever ortamında, uygulansım sorunsuz bir şekilde yürütülüyor. Ancak uygulamayı mod_python ile apache sunucusuna dağıttığımda, uygulamamı giremiyorum ve tarayıcı zaman aşımına kadar yüklenmeye devam ediyor. Uygulamamdaki tüm içe aktarılan scipy.stats ifadelerini kaldırdıktan sonra sorun çözüldü ve uygulamamı apache sunucusunda çalıştırabilirim.

İlgili konular