Cara Menjalankan Background Proses Di Python Tanpa Celery

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Cara Menjalankan Background Proses Di Python Tanpa Celery

Secara default pada bahasa python ketika sebuah kondisi perlu dijalankan secara background proses, python memerlukan library tambahan.

Penanganan background process biasanya menggunakan celery dan RabbitMq, namun penggunaan Celery dan RabbitMq pada kasus pemrosesan data mengakibatkan penggunaan memori yang berlebihan.

Penggunaan memori yang berlebihan bisa membuat server menjadi tidak sehat, dan tentunya dapat menurunkan performa sistem secara keseluruhan yang berpotensi mengganggu jalannya operasional perusahaan.

Bagi perusahaan yang memiliki budget operasional IT yang berlebih tentu ini tidak jadi masalah, karena Anda bisa menambahkan kapasitas memori kapan pun.

Berbeda halnya dengan perusahaan startup yang masih mengandalkan pendanaan pribadi, di mana biaya operasional mesti ditekan dengan tujuan agar perusahaan punya nafas lebih panjang.

Developer mesti mencari cara solusi untuk hal tesebut, salah satu cara alternatif yang bisa Anda coba adalah memaksimalkan penggunaan Asyncio.

Pada bahasa python Asyncio terkenal dengan kehandalanya dalam membantu developer menangani berbagai task yang bersifat async.

Anda bisa membuat sebuah decorator yang berfungsi sebagai method yang akan memproses sebuah fungsi dijalankan secara background proses. Perhatikan kode berikut :

import asyncio
def fire_and_forget(f):
from functools import wraps
@wraps(f)
def wrapped(*args, **kwargs):
loop = asyncio.new_event_loop()
if callable(f):
return loop.run_in_executor(None, f, *args, **kwargs)
else:
raise TypeError('Task must be a callable')
return wrapped

from file_name import fire_and_forget

@fire_and_forget
def kirim_email(email):
print("kirim email ({}) sukses")

kirim_email('test@example.com')

Dari kode diatas ketika fungsi kirim_email di eksekusi, decorator fire_and_forget akan memerintahkan system melalui asyncio agar fungsi kirim_email diksekusi secara background proses.

Penasaran dengan asyncio Anda bisa membaca dokumentasi lengkapnya di sini : https://docs.python.org/3/library/asyncio.html

Video :

Baca artikel lainya :