Python Celery ile Çalışmak¶
Bu yazımızda Python dünyasında sıkça kullanılan Celery kütüphanesini inceleyeceğiz.
Celery nedir?¶
Asenkron görev kuyruğu(task queue) kütüphanesidir. Ana programın çalışmasını engellemeden arka planda zaman alan ve yoğun kaynak tüketen görevleri gerçekleştirmenize olanak tanır. E-posta göndermek, büyük verileri işlemek veya toplu işlemleri gerçekleştirmek gibi zaman alıcı görevleri yerine getirmek için yaygın olarak kullanılır.
Celery kim kullanır?¶
Uygulamalarının yanıt verebilirliğini artırmak için ana programdaki zaman alan görevleri haricen çalıştırmak isteyen geliştiriciler ve programcılar tarafından kullanılır.
Celery ne yapar?¶
Görevleri Python fonksiyonları olarak tanımlamanıza ve ardından bu görevleri birden çok çalışan(worker) arasında asenkron olarak dağıtmanıza(distribute) ve çalıştırmanıza olanak tanır.
Celery ne zaman kullanırsınız?¶
Tamamlanması önemli miktarda zaman alan görevleriniz olduğunda ve kullanıcıyı sonuçları bekletmek istemediğinizde Celery kullanırsınız. Celery kullanarak, kullanıcı uygulamayı kullanmaya devam ederken siz arka planda bu görevleri gerçekleştirebilirsiniz.
Celery nerelerde kullanılabilir?¶
Celery, e-ticaret platformları gibi sipariş işleme, bildirim gönderme ve rapor oluşturma gibi çeşitli uygulamalarda kullanılabilir. Görüntü işleme veya veri analizi gibi zaman alan istekleri işlemek için web uygulamalarında da kullanılabilir.
Celery neden kullanılır?¶
Görevleri birden çok çalışana(worker) dağıtarak uygulamanızın ölçeklenebilirliğini ve performansını artırır, bu da çok sayıda görevi verimli bir şekilde halletmenizi sağlar. Ayrıca, uygulama çökse veya yeniden başlasa bile görevlerin yürütülmesini sağlar.
-
Şekil 1'de Celery'yi worker olarak görmektesiniz. Celery ile Python uygulaması arasında message broker adı verilen köprü bir yazılım(middleware) kullanılır. Bu message broker Redis, RabbitMQ olabilir.
-
Celery worker'lar farklı thread'lerde çalışabilir. Hatta farklı makinelerde bile çalışabilir. Celery, message broker'ı dinler ve gelen taskları işler. Gelen her yeni task'ı message broker'dan alarak arka planda çalıştırır.
-
Çalıştırılan taskların sonuçları result backend adı verilen sistemlerde muhafaza edilebilir. Bu result backend sistemi bir veritabanı olabilir.
-
Şekil 1'de message broker olarak Redis, result backend olarak yine Redis örnek verilmiştir.
-
Şekil 1'in basit olarak açıklamasını bu yazımızda görebilirsiniz.