Redis 5.0, Streams adlı yeni bir özelliği yeni bir şekilde kullanıma sundu . Süreçler arası iletişim için mesajlar dağıtmak için mükemmel görünüyorlar:
Bununla birlikte, bu özellik oldukça yeni olduğu için, orada neredeyse hiç Python (veya hatta genel redis) kılavuzu yok ve akış sistemini kullanım durumuma nasıl uyarlayacağımı gerçekten anlayamıyorum.
Mesajları akışa gönderen ve alıcı bilgilerini (gibi
recipient: "user1") içeren bir yayıncı programım olmasını istiyorum . Ardından, tümünün yeni akış mesajlarını kontrol etmesi ve hedeflenen alıcı olup olmadıklarını karşılaştırması gereken birkaç alma sürecim olacak. Eğer öyleyse, mesajı işlemeli ve işlendi (kabul edildi) olarak işaretlemelidirler.
Ancak, tüketici grupları, bekleme durumu vb. Fikrini gerçekten anlamıyorum. Herhangi biri bana küçük sözde kodum için gerçek bir dünya örneği verebilir mi?
gönderen.py
db = Redis(...) db.the_stream.add({"recipient": "user1", "task": "be a python"})
alıcı.py (her biri benzersiz bir alıcı kimliğiyle çalışan birçok örneği olacaktır)
recipient_id = "user1" # you get the idea... db = Redis(...) while True: message = db.the_stream.blocking_read("$") # "$" somehow means: just receive new messages if message.recipient == recipient_id: perform_task(message.task) message.acknowledge() # let the stream know it was processed else: pass # well, do nothing here since it's not our message. Another recipient instance should do the job.```
Verdiğiniz örnek ve sözde kodla şunu hayal edelim:
recipient.user160 mesaj bir dakika oluyor
perform_task()yöntemin yürütülmesi 2 saniye sürer.
Burada ne olacağı açıktır: Yeni bir mesajın gelmesi ile onun işlenmesi arasındaki gecikme yalnızca zamanla büyüyecek ve "gerçek zamanlı işlemden" daha da uzaklaşacaktır.
system throughput = 30 messages/minute
Bunu aşmak için, için bir tüketici grubu oluşturmak isteyebilirsiniz
user1. Burada, için aynı grupta birleştirilmiş 4 tümüyle paralel çalışan 4 farklı python işlemine sahip olabilirsiniz
user1. Şimdi
user14 işçiden biri için bir mesaj geldiğinde onu alacak ve
perform_task().
system throughput = 120 message/minute
Örnekte,
message.acknowledge()Akışınızın okuyucu yalnız (XREAD komutları) olduğu için aslında yok.
Eğer bir grup olsaydı, mesajların kabul edilmesi zorunlu hale gelir; bu, grup üyelerinden birinin aslında bu mesajı işlediğini bilir, böylece "devam edebilir" (mesajın beklemede olduğu gerçeğini unutabilir) . Grupları kullanırken, her mesajın bir kez tüketici grubu çalışanlarından birine (XGROUPREAD komutları) teslim edilmesini sağlamak için biraz sunucu tarafı mantığı vardır . İstemci bitirdiğinde, bu mesajın bir onayını (XACK komutları) yayınlar, böylece sunucu tarafı "tüketici grubu tamponu" onu silebilir ve devam edebilir.
Bir işçinin öldüğünü ve mesajı asla kabul etmediğini hayal edin. Bir tüketici grubuyla, bu duruma dikkat edebilir (XPENDING komutlarını kullanarak) ve örneğin aynı mesajı başka bir tüketicide işlemek için yeniden deneyerek onlara göre hareket edebilirsiniz.
Grupları kullanmadığınız zaman, redis sunucusunun "devam etmesi" gerekmez, "onay"% 100 müşteri tarafı / iş mantığı haline gelir.
Cate Blanchett, kocasıyla tanıştığında tipik flört tavsiyelerine karşı çıktı.
Michael Sheen kar amacı gütmeyen bir aktör ama bu tam olarak ne anlama geliyor?
Ünlü yıldız Colin Egglesfield, RomaDrama Live'da heyecan verici hayran karşılaşmaları hakkında konuştu! artı kongredeki INSPIRE programı.
Northern Exposure'un neden 90'ların en popüler programlarından biri haline geldiğini görmek için bir Blu-ray veya DVD oynatıcının tozunu almanız gerekecek.
Sonifikasyon, verilerin alınması ve sese dönüştürülmesi işlemidir. İçinde yaşadığımız evren söz konusu olduğunda, bilim adamları seslerin kesinlikle başka bir deyişle ve çok güzel olduğunu buluyorlar.
Salonlardan ve kişisel bağışlardan alınan saç kesimleri, petrol sızıntılarını emen ve çevreyi korumaya yardımcı olan paspaslar olarak yeniden kullanılabilir.
Son 200'den fazla yılda Beyaz Saray'da sadece birkaç kişi evlendi. Onlar kimdi ve orada bir düğün yapmak için ne gerekiyor?
Sulu bir greyfurt yeme düşüncesiyle ağzınız heyecanlanıyor mu? Pekala, toplanın, çünkü greyfurt vücudunuzun ihtiyaç duyduğu vitaminler ve antioksidanlarla yüklüdür.
Gizmodo'da, kıdemli editör Jennings Brown'ın internetteki en karanlık ruhsal hareketlerden birine derinlemesine bir dalış olan ilk araştırma podcast'imizi başlattığı ve kıdemli muhabir Kate Conger, Google'ın Askeri dronlar tarafından yakalanan görüntülerin analizini yapay zeka yardımıyla güçlendirmeyi amaçlayan bir Pentagon programı olan Project Maven. Ancak bunlar, geçen haftanın mükemmel gelişmelerinden sadece ikisi.
Evet, ısırmaya benziyor. Sports Illustrated ve The Athletic dahil olmak üzere çeşitli yayınlar tarafından 2020'de Yılın Beklentisi seçildikten sonra 25 yaşındaki Edgar Berlanga, Porto Rikolu Mike Tyson olarak alkışlandı.
Fox News'in haberleri ele almasına makul ölçüde kızan makul bir insan olduğunuzu varsayalım. Belki de ev sahiplerinin COVID-19 pandemisinin zirvesinde aktif olarak tehlikeli yalanlar yayma biçimleri veya 6 Ocak ayaklanmasının hikayesini utanmazca döndürmeye devam etme biçimleridir.
Minecraft, 2023'te başka bir spin-off alıyor. Mojang'ın sürekli en çok satanı, şimdi, düşman kale duvarlarını yıkarken bile parlak ve sakin görünen Minecraft Efsaneleri ile strateji türüne ayrılıyor.
Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday
Oscar kazananın yüzyıl ortası evinde üç yatak odası, iki banyo ve okyanus manzarası bulunuyor.
Jeannie Mai Jenkins, 4 aylık kızı Monaco'yu emzirmek için "Bebeğiniz acıktığında kendinizi çok yorgun hissediyorsunuz, bebek için yeterince üretemiyorsunuz" dedi.
Yaklaşık 10 yıllık çift, 31 Mayıs'ta çıkacak olan yeni A&E gerçeklik dizisi Bobby Brown: Every Little Step'in öncesinde aşk hikayelerini paylaşıyor.
Hepimiz işte bunalmış hissetmekle ilişki kurabiliriz. Kendinizi işinizin taleplerini veya kariyer hedeflerinizi suçlarken bulabilirsiniz, ancak muhtemelen aynaya bakmalısınız.
Yıllar boyunca birçok çerçeve, yaklaşım ve araç kullandım. Öğrendiklerimi ürün geliştirme ve yaşam döngüsünün farklı alanlarına odaklayarak çok sayıda aşamadan geçtim.
Genel Bakış vEmpire DDAO, ekosistemimizdeki en güçlü topluluğu aramak için kuruluşun 16 yatırımı arasında topluluk teşvikli bir arena düzenliyor. 15 gün boyunca, her gün, topluluk üyelerinin projeleri için oy kullanabilecekleri Twitter'ımızda iki proje savaşa girecek.
NCG artık oyundaki tek parlak şey değil. Oyuna yeni bir para birimi olan “Crystal” eklenecek.