Perubahan Kecil yang Memberikan Hasil Luar BiasaAtomic Habits: Perubahan Kecil yang Memberikan Hasil Luar Biasa Orang mengira ketika Anda ingin mengubah hidup, Anda perlu memikirkan hal-hal besar. Namun pakar kebiasaan terkenal kelas dunia James Clear telah menemukan sebuah cara lain. Free Klik Disini ! |
Pada artikel sebelumnya kita telah banyak membahas tentang Django, Celery, Redis
Secara default, entri diambil dari pengaturan beat_schedule, tetapi custom store juga dapat digunakan seperti menyimpan entri dalam Database SQL. Dalam hal ini kamu harus bisa memastikan hanya ada satu penjadwalan dalam satu waktu. Jika tidak, akan terdapat duplikasi task.
timezone = "Asia/Jakarta"
Buat sebuah function dengan nama broadcast_email, simpan di file task.py yang sudah di buat di tutorial sebelumnya : Asynchronous task dengan django dan celery. perhatikan kode di bawah ini
@shared_task
def broadcast_email():
logger.info("news letter has send")
Tambahkan CELERY_BEAT_SCHEDULE pada django settings.py, perhatikan kode di bawah ini :
CELERY_BEAT_SCHEDULE = {
'broadcast_email': {
'task': 'schedules.task.broadcast_email',
'schedule': crontab(hour=7, minute=30, day_of_week='monday')
},
}
Sintaks dari ekspresi Crontab ini sangat flexible. perhatikan sample di bawah ini
crontab() : execute setiap menit
crontab(minute=0, hour=0) : execute setiap hari pada tengah malam
crontab(minute=0, hour='*/3') : execute setiap tiga jam
crontab(minute=0,
hour='0,3,6,9,12,15,18,21') : execute setiap tiga jam
crontab(minute='*/15') : execute setiap 15 menit
crontab(day_of_week='sunday') : execute setiap menit pada hari minggu
crontab(minute='*',
hour='*',
day_of_week='sun') : execute setiap menit pada hari minggu
crontab(minute='*/10',hour='3,17,22', day_of_week='thu,fri') : execute setiap 10 menit setiap antara jam 3-4, 5-6, 10-11
crontab(minute=0, hour='*/2,*/3') : execute setiap jam habis di bagi 2 dan 3 kecuali jam 1, 5, 7, 11 (am dan pm)
crontab(minute=0, hour='*/5') : execute setiap jam habis di bagi 5
crontab(minute=0, hour='*/3,8-17') : execute setiap jam habis dibagi 3 dan setiap jam antara jam 8 pagi sampai jam 5 sore
crontab(0, 0, day_of_month='2') : execute setiap bulan pada hari ke-2
crontab(0, 0,day_of_month='2-30/2') : execute pada setiap hari genap
crontab(0, 0,day_of_month='1-7,15-21') : execute setiap minggu pertama dan ketiga tiap bulan
crontab(0, 0, day_of_month='11',month_of_year='5') : execute setiap tanggal 11 mei tiap tahun
crontab(0, 0,month_of_year='*/3') : execute setiap hari pada bulan pertama setiap kuartal
baca artikel lainya :
celery -A firstproject beat -l info