Görüş işlevlerimden biri çok uzun bir işlem işi ve açıkça farklı şekilde ele alınması gerekiyor. Kullanıcı uzun bir süre beklemek yerine, sonuçları e-postayla gönderecek olan işleme işini yiyebildiysem ve tamamlamayı beklemeden kullanıcıya isteğinin işlendiğini bildirip, göz atmasına izin verirsem en iyisi olurdu. Os.fork'u kullanabileceğimi biliyorum, ama Django açısından 'doğru yol' olup olmadığını merak ediyordum. Belki de HTTP yanıtını döndürebilirim ve bu işten bir şekilde devam etmektense.Django görünümünde asenkron iş talebi en iyi nasıl yapılır?
cevap
Neden işlem yapmak için thread'u başlatıp yanıt göndermeye başlamıyorsunuz?
Bu soruna bir çok çözüm var ve en iyisi iş yükünüzün ne kadar ağır olacağına bağlı.
Hafif bir iş yükünüz varsa, bir "iş" modeli tanımlamak, yeni işleri veritabanına kaydetmek ve daha sonra her defasında tek tek bir komut dosyası çalıştırmak için tek bir komut dosyası çalıştırmak olan django-mailer tarafından kullanılan yaklaşımı kullanabilirsiniz. Veritabanında saklanan işler (tamamlandığında bunları silme). İş planlamasını daha kolay yönetmek için django-chronograph gibi bir şey kullanabilirsiniz
İşi işlemek için bir komut dosyasının nasıl yazılacağını anlama konusunda yardıma ihtiyacınız varsa, yardım için James Bennett'ın makalesine bakın: Standalone Django Scripts.
Çok yüksek bir iş yükünüz varsa, işleri işlemek için tek bir sunucudan daha fazlasına ihtiyacınız olacaktır, yani gerçek bir dağıtma sırası kuyruğu kullanmak istiyorsunuz. Burada bir çok rekabet var, bu yüzden tüm seçenekleri ayrıntılı olarak açıklayamıyorum, ancak Django uygulamaları için kullanmak için iyi bir tane olan celery.
Bir çözüm seçmeden önce, işlemin nasıl yürütüleceğini belirlemeniz gerekir. I.e, her kullanıcı için aynı süreçtir, veri aynıdır ve düzenli olarak planlanabilir mi? veya her kullanıcı bir şey ister ve sonuçlar biraz farklı mıdır?
Örnek olarak, veriler her kullanıcı için aynı olacak ve bir programda çalıştırılabiliyorsa, cron kullanabilirsiniz.
Bkz: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/ veya http://docs.djangoproject.com/en/dev/howto/custom-management-commands/
Ancak istekleri anlık olacak ve yüksek yükünü kaldırabilecek ve eşzamansızsa olabilir ölçeklenebilir bir şey gerekiyorsa: ne aslında aradığınız bir mesaj queing sistemidir. Görüşünüz, sıraya göre harekete geçecek bir istek ekleyecektir. taahhüt geçen Nisan ayında olmasına rağmen, Django Kuyruk hizmeti tamamen & piton ve basit django ve proje terk edildi görünüyor:
Django bu uygulamaya birkaç seçenek vardır. Eğer dağıtılır ölçekler ve sunucuların queing açık kaynak mesajının kullanır şey gerekiyorsa İkinci seçenek http://code.google.com/p/django-queue-service/
: http: // stackoverflow kereviz neye ihtiyacınız
http://ask.github.com/celery/introduction.html http://github.com/ask/celery/tree
Evet, sonuçlar istek başına tamamen farklı. –
Demiurge, bu durumda bu görüşün ne sıklıkta talep edileceğine bakmanız gerekiyor. Bir sürü olacaksa, bir kuyruk çözümü öneririm. Bu şekilde görünüm istenebilir, kullanıcının tamamlamak için beklemesi gerekmeden kuyruğa eklenebilir. – ismail
- 1. Asenkron Web Gereksinimi en iyi uygulamaları
- 2. Django, en iyi uygulamaları zincirleme/yönlendirmeyi görüntüleme
- 3. En İyi Django
- 4. Django ile Grunt Kullanımı: En İyi İş Akışı
- 5. Platform bağımsız asenkron yazım nasıl yapılır?
- 6. jQuery.ajax() - Zaman aşımları en iyi nasıl yapılır?
- 7. Retrofit kullanarak toplu iş talebi
- 8. Django Genel Görünüm - Erişim talebi
- 9. MVVM'de asenkron nedir? Model veya ViewModel. En iyi uygulama?
- 10. İyi Uygulamalar: En iyi Django Şablonları'nda Değerlendirmesi-Yıldızlar nasıl uygulanır
- 11. TOracleOutput Bileşeninde ETL İş Hatası Talebi
- 12. En iyi İş Akışı aracı nedir
- 13. Çoklu iş parçacığının en iyi yolu?
- 14. Django Görünümünde STATICFILES_DIRS Kullanımı
- 15. Django: Veritabanı tasarımı için en iyi uygulamalar
- 16. Django için en iyi Wiki çözümü hangisidir?
- 17. django: dönüş dize görünümünde
- 18. django üzerinde folium kullanırken en iyi uygulama
- 19. Django Çok Kullanıcılı Girişler - en iyi yaklaşım?
- 20. ASP.NET MVC 3 - Kullanım için en iyi yöntem Model görünümünde
- 21. Nasıl Yapılır: Symfony'nin formlarının performansını en iyi duruma getirin?
- 22. Asenkron Django modeli sorguları mümkün mü?
- 23. Django indeksi sayfası en iyi/en yaygın uygulama
- 24. graphene-django - Filtreleme nasıl yapılır?
- 25. Django En İyi Uygulamalar: Bir form nasıl temizlenir ve oluşturulur
- 26. Jmeter'da en iyi yolu bulmanın en iyi yolu nedir?
- 27. Ana dalda Sourcetree NOT ile otomatik çekme talebi nasıl yapılır?
- 28. Swift: Sunucu SSL Sertifikası Kullanarak Https Talebi Nasıl Yapılır?
- 29. İstek formu olmadan OKHTTP posta talebi nasıl yapılır?
- 30. en iyi (veya en azından iyi) kılavuz
Yinelenen olduğunu .com/questions/1352678/it-herhangi-as-make-bir-asynchronous-işlev-çağrı-python-django/ –
Benim kötü, ben çok iyice arandı sanıyordum! –
Maalesef, basit bir cevap var gibi görünmüyor. –