Install Celery, Flower & Redis di Ubuntu 18.04

Muhammad Yunus
4 min readMay 13, 2020

--

Install Celery untuk asynchronous job queue menggunakan Redis sebagai broker dan monitor job dengan Flower

Celery merupakan asynchronous job queue secara distributed message passing yang memungkinkan sebuah job dapat dieksesusi ditempat dan waktu berbeda dalam konteks distributed computing. Fokus utamanya adalah untuk real-time operation, meskipun demikian Celery mampu menjalankan scheduled operation. Exceution unit pada Celery disebut dengan task, yang akan dijalankan secara councurrent pada satu atau lebih worker servers menggunakan multiprocessing, Eventlet, atau gevent.

Flower merupakan web based monitoring dan administration untuk Celery clusters. Dalam tool ini kita dapat melakukan real-time monitoring, remote control dan broker monitoring.

Broker yang dapat digunakan oleh Celery diantaranya Redis, RabbitMQ, Amazon SQS, dll. Pada kesempatan kali ini kita akan gunakan Redis. Redis merupakan in-memory data structure store, dapat digunakan sebagai database, cache dan juga message broker. Redis tidak menyimpan data secara presistent, data hanya di-dump di memory database yang membuatnya sangat cocok untuk real-time data processing.

Berikut merupakan illustrasi Celery saat menggunakan Redis sebagai message broker untuk Flask web app.

Install Celery

untuk install celery, dapat dilakukan melalui pip,

$ sudo pip install celery

Setelah berhasil diinstal, selanjutnya kita akan install Redis server,

$ sudo apt install redis-server

Selanjutnya kita install celery redis extension,

$ sudo pip install celery['redis']

Setelah itu kita lanjutkan dengan install Flower,

$ sudo pip install flower

Testing

Selanjutnya kita akan buat sebuah task untuk dijalankan oleh Celery worker. Berikut adalam contoh implementasi Celery dengan Flask :

Struktur direktori :

app.py
init/
|_ make_celery.py

Buat sebuah file python dalam folder init dengan nama make_celery.py dan masukan program berikut,

Program tersebut akan membuat sebuah celery object yang dapat dipanggil dari aplikasi lain.

Selanjutnya buat file python lainya, diluar folder init dengan nama app.py , dan masukan program berikut,

pada blok program diatas, kita meng-import object celery dari file make_celery.py. Selanjutnya dengan menggunakan decorator @celery.task() untuk menambahkan sebuah task dengan nama add_together yang didalamnya hanya menjalankan operasi penjumlahan sederhana.

Setelah itu kita dapat panggil task tersebut di background,

result = add_together.delay(23, 42)
result.wait() # 65

untuk saat ini saya hanya jalankan melalui python mode REPL,

task tersebut, tidak akan diesksekusi sebelum worker dijalankan. Karena kita membuat object celery pada script app.py, maka untuk menjalankan celery worker lakukan dengan cara berikut,

celery -A app.celery worker

log saat Celery worker dijalankan,

jika kalian mendapati error,

hal ini disebabkan karena Celery tidak bisa terhubung ke Redis, periksa apakah Redis server yang sebelumnya kita install berjalan atau tidak, dengan cara berikut,

sudo systemctl status redis

jika terlihat normal (running), periksa apakah port yang digunakan sesuai dengan yang kita define diatas. Default port pada Redis adalah 6379, dapat dicek pada config Redis dengancara berikut,

sudo nano /etc/redis/redis.conf

Monitoring

Untuk melihat Flower web ui, jalankan command berikut pada terminal baru,

flower -A proj --port=5555

pada browser buka http://loaclhost:5555

tampilah Celery Flower Monitoring Tool

Detail worker dengan status online ,

Selanjutnya msuk ke menu Task, untuk melihat log task yang dijalankan,

Detail task yang dijalankan dengan success ,

--

--

Muhammad Yunus
Muhammad Yunus

Written by Muhammad Yunus

IoT Engineer, Software Developer & Machine Learning Enthusiast

No responses yet