Web servisimde kullandığım büyük bir salt okunur veri yapısına (ağ üzerinde yüklü bir grafik olmasına rağmen bu önemli olmamalı) sahibim. İnternet servis birimi Flask'ta inşa edildi ve daha sonra Gunicorn aracılığıyla sunuldu. Çıktığım her silah işçisi için, çalışanın veri yapısının kendi kopyasını taşıdığı ortaya çıkıyor. Böylece, bir işçiyle mükemmel bir şekilde yönetilebilen ~ 700mb veri yapım, 8'i çalıştırdığımda oldukça büyük bir bellek kıskacına dönüşüyor. Bu veri yapısını gunicorn süreçleri arasında paylaşabileceğim herhangi bir yol var mı bu yüzden çok fazla boşa harcamam gerekmiyor?Gunicorn'da Bellek Paylaşımı?
cevap
Bunu yapmanın en kolay yolu, preload_app
seçeneğini kullanarak tell gunicorn to preload your application seçeneğidir. Alternatif
from flask import Flask
from your.application import CustomDataStructure
CUSTOM_DATA_STRUCTURE = CustomDataStructure('/data/lives/here')
# @app.routes, etc.
, sen gevent with gunicorn (eğer özel veri yapısı ile paylaşılan hafızayı sarabilirsiniz ise) bir memory-mapped file size sağlamak için kullanabilirsiniz: Bu, bir modül düzeyi değişkeni olarak veri yapısını yükleyebilir varsayar IPC'yi kullanarak bağlandığınız tek bir işlem veya the multi-processing module to spin up your own data-structure server'u kullanıyorsunuz.
önyükleme seçeneği çalışmıyor, bazı kukla veri yapısı ile nasıl kullanılacağını gösteren bir örnek verebilir misiniz? – neel
@neel - kurulumunuzun bir örneği ve çalışmayan bir başka soru sormaktan muhtemelen daha iyisiniz. –
http://stackoverflow.com/questions/35914587/how-to-get-a-concurreny-of-1000-requests-with-flask-and-gunicorn Buraya soru yükledim Eğer bakarsan harika olur bir kez. Şimdiden teşekkürler. – neel
- 1. paylaşımı Grafik
- 2. Paylaşımı veri
- 3. Memcache paylaşımı
- 4. Facebook Paylaşımı Düğme Problemleri
- 5. Twitter'da Paylaşım Paylaşımı 11
- 6. ASP.Net Önbellek paylaşımı
- 7. Onedrive İş için - Dosya paylaşımı
- 8. Subdomain çerez paylaşımı çalışmıyor (Heroku'da)?
- 9. yer paylaşımı html bitti mi?
- 10. İki webapps arasında Ehcache paylaşımı
- 11. Facebook paylaşımı link görüntülenemiyor Resim
- 12. Yazma ekran paylaşımı eklentisi/sürücüsü
- 13. iOS Paylaşımı Swift'te kapsayıcı URL
- 14. bellek sınıfı bellek filtresi
- 15. Bellek
- 16. İki etki alanı arasındaki oturum paylaşımı
- 17. tfs 2010'daki projeler arasında kod paylaşımı
- 18. lan http sohbet ve dosya paylaşımı
- 19. DataTrigger vs dönüştürücü performansıyla veri paylaşımı
- 20. S3 Çapraz Kaynak Kaynak Paylaşımı Çalışmıyor
- 21. Bir Firefox eklentisindeki dosyalar arasında veri paylaşımı
- 22. Dropbox Datastore - Kullanıcı hesaplarında veri paylaşımı
- 23. iOS: IPhone Kamera Önizlemesinde Yer Paylaşımı
- 24. Facebook paylaşımı başarısını nasıl algılar? Javascript
- 25. Yöneticileri kullanarak python'da nesne (sınıf örneği) paylaşımı
- 26. İki django projesi arasında veritabanı tablosu paylaşımı
- 27. Çapraz Kaynak Kaynak Paylaşımı (CORS) Hatalarından Kaçınma
- 28. Chrome "debugger'da duraklatılmış" yer paylaşımı nasıl gizlenir?
- 29. Modüller arasında iyi uygulama paylaşımı kaynakları?
- 30. Maven modülleri arasında statik kaynakların paylaşımı
Verileri depolamak ve her işlemden erişmek için Redis gibi bir şey kullanmayı düşündünüz mü? Hıza kadar paylaşımlı belleğe çok benzer olurdu. – nathancahill
İsterdim, ancak karmaşık bir grafikten bahsediyoruz ki Redis'te saklamak için kolay bir yol yoktur (Redis'in şu an AFAIK yönelimli grafikler veya genel grafik desteği yoktur). – Eli
Çözüm sizin için mi çalışıyor? Eğer evet eğer bana ayrıntılı olarak bilgi verebilir misiniz, nasıl yaptınız? – neel