2011-08-31 33 views
6

Yani birisi bana yardımcı mümkün olabilir umut ediyorum elektrik direği içinde dosya yüklemeleri ile oldukça can sıkıcı bir sorun yaşıyorum yükleyin. Aslında ben bu sorunu Pylons ile ilgili bir sorun olduğunu düşündüğüm here yayınladım, ama bu sorunun nedeni sunucuya, yani yapıştırmaya bağlı olduğu için geldim ve sorunun nerede olduğunu tam olarak izledim, ama emin değilim nasıl çözülür. Davranış aşağıdaki gibidir. Paster üzerinden hizmet verdiğim bir Pylons web uygulaması var. Uygulamanın tek bir parçası, kullanıcıların sistemlere dosya yüklemesine izin verir ve bazen bunlar oldukça büyük olabilir (> 50mb). Böyle yüklemeler sırasında, sunucu sporadik bağlantıyı sıfırlar (yani hata "Hata 101 (net :: ERR_CONNECTION_RESET).: Bağlantı sıfırlandı" okur Chrome'da.) Bu meydana daima değil, sadece yaklaşık ~% 50 büyük dosyalar ile zaman.Bağlantı sıfırlar

Bu durumlarda On

, sunucu asla uygulama seviyesine kadar POST eller. İstisna yok (en azından ben bulabilirim). Sorunu, cascade.py (özellikle, httpserver.py adresinden çağrılan wsgi_application yöntemi) olarak daraltdım. İkincisinin Gönderen:

sonucu = self.server.wsgi_application (self.wsgi_environ, self.wsgi_start_response) cascade.py ait çağrı fonksiyonunda

, dosyaya yazılacak görünüyor geçici bir dosya. > 0 copy_len iken

: İlgili döngü başlar

Daha sonra açık dosyaya birer parçaları tek yazar. Bu yazarların hiçbiri bireysel olarak bir istisna atar. Ancak, sunucu bu yazılar sırasında genellikle 'gitmekten' kurtulacak, görünüşte rasgele (zaman, bununla da ilişkili görünmüyor). Yani, küçültülmüş olan copy_len boyutunu yazdırırsam, bir noktaya kadar azaldığını izlerim, ve sonra sunucu aniden bir 'bağlantı sıfırlama' (veya en azından müşterinin yaptığı gibi) ve yöntemi gönderir. çıkılıyor gibi görünüyor (copy_len, 0'dan olmasa bile, döngüden çıkmış gibi yazdırılmaktan çıkar). o sort ... ölür -

Bu sadece düzensiz olur ve 2) Bir gerçek hata/İstisna izini gibi olamaz) 1 olarak tamamen stumped.

Bu konularda, ben macunu 1.7.3 koşuyorum, Python 2.7 ve Fedora işletim sistemi. Neler olabileceğine dair bir kavrayış var mı ve bunu nasıl çözebileceğim? Herhangi bir yardım için çok teşekkür ederim.

cevap

1

İki fikir ... akla gelen böyle nginx gibi başka daha sağlam web sunucusu ile

  • Testi. Gerekirse eşzamanlı olarak çalıştırılabilir. Sorun devam ederse bakın. Yapıştır, web uygulamalarını ele alabilirken, bildiğim kadarıyla dev dosya aktarımlarını işlemek anlamına gelmez.
  • Yükleme sırasında Chunked Transfer Encoding kullanıyor musunuz?
+0

+1 Muhtemelen bir web sunucusu sorunu bir python/pylons sorunundan daha fazla olabilir. – Kekoa

0

Ubuntu 10.04 üzerinde apache 2.2 + mod_python 3.3'ü kullanmayla ilgili bir sorun yaşamadım. Büyük dosyaları (400mb) başarıyla yükledim.

ben html upload form oluşturmak için uploader kullandım.