CodeGym /Kurslar /Python SELF AZ /Təkrarlanan tapşırıqların qurulması (gündəlik və həftəlik...

Təkrarlanan tapşırıqların qurulması (gündəlik və həftəlik xatırlatmalar)

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Sadə bir tapşırığın quraşdırılması

Python

import schedule
import time

def job():
    print("Xatırlatma: Zəhmət olmasa poçtunuzu yoxlayın!")

# Tapşırığın hər gün işə salınmasını qururuq
schedule.every().day.at("09:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Bu nümunədə job funksiyası hər gün səhər saat 9-da çağırılacaq. schedule kitabxanası hər 1 saniyədən bir run_pending() istifadə edərək planlaşdırılan tapşırıqların olub-olmadığını yoxlayır. Unutmayın ki, tapşırığın yerinə yetirilməsi üçün kodunuz daim işləməlidir.

Maraqlı hakerlər üçün qeydlər

Qeyd edin ki, every().hour istifadə edərək tapşırığı hər saatda və ya every(2).hours istifadə edərək hər iki saatda bir işə sala bilərsiniz. İmkanlar demək olar ki, sonsuzdur.

2. İş günlərində xatırlatmalar

İndi vəziyyəti bir az mürəkkəbləşdirək: təsəvvür edək ki, sizə xatırlatma yalnız iş günlərində lazımdır. Məsələn, hər iş günü eyni xatırlatmanı almaq istəyirik.

Python

import schedule
import time

def weekday_job():
    print("İş xatırlatması: hesabatı hazırlamağı unutmayın!")

schedule.every().monday.at("08:00").do(weekday_job)
schedule.every().tuesday.at("08:00").do(weekday_job)
schedule.every().wednesday.at("08:00").do(weekday_job)
schedule.every().thursday.at("08:00").do(weekday_job)
schedule.every().friday.at("08:00").do(weekday_job)

while True:
    schedule.run_pending()
    time.sleep(1)

Bu halda, hər iş günü səhər saat 8-də sizə hesabat hazırlamaq barədə xatırlatma veriləcək. Beləliklə, skriptiniz həmişə qrafiki izləyəcək, hətta siz bunu unutduğunuzda belə.

3. Həftəlik tapşırıqların qurulması

Bəs hər bazar günü xatırlatma almaq istəyirsinizsə nə etməlisiniz? Deyək ki, siz iş həftəsindən əvvəl kofe ehtiyatlarını yoxlamaq istəyirsiniz. Gəlin bunun necə edildiyini öyrənək:

Python

import schedule
import time

def sunday_job():
    print("Xatırlatma: Növbəti həftə üçün kofe ehtiyatlarını yoxlayın!")

schedule.every().sunday.at("18:00").do(sunday_job)

while True:
    schedule.run_pending()
    time.sleep(1)

Bu kiçik kod parçası bazar gününüzü bir az da nizama salacaq və növbəti həftəyə hazırlaşmağı xatırladacaq. İndi kofe ehtiyatları ən gözlənilməz anda tükənməyəcək. Bəli, bilirəm ki, bu, bir çoxları üçün faciə ola bilər.

4. Tapşırıqların dəyişdirilməsi

Tapşırıqların cədvəldən silinməsi

Tapşırığı ləğv etmək lazımdırsa, cancel_job() metodundan istifadə edə bilərsiniz. Məsələn, tapşırığı cədvəldən çıxarmaq üçün tapşırıq obyektini alıb onun üçün cancel_job() metodunu çağırmaq olar.

Python

job = schedule.every().day.at("09:00").do(daily_task)
schedule.cancel_job(job)  # Tapşırığı cədvəldən silirik

Tapşırığın vaxtını dəyişmək

Tapşırığın yerinə yetirilmə vaxtını dəyişdirmək üçün təkrar cədvəl təyin etmək olar. Məsələn, əgər tapşırıq saat 9:00-a planlaşdırılmış idisə, amma indi onu 10:00-a keçirmək lazımdırsa, cədvəlini yenidən yaza bilərik.

Python

# Tapşırığı hər gün 9:00-a planlaşdırırıq
job = schedule.every().day.at("09:00").do(my_task)

# Tapşırığı 10:00-a keçiririk
job.clear()  # Tapşırığın cari cədvəlini təmizləyirik
job.at("10:00")  # Yeni vaxta keçiririk

Aktiv tapşırıqların yoxlanılması

Cədvəldə planlaşdırılmış tapşırıqların olub-olmadığını bilmək üçün schedule.jobs vasitəsilə bütün aktiv tapşırıqların siyahısını ekrana çıxarmaq olar. Bu, cədvəldə olan bütün tapşırıqlar barədə məlumat almaq üçün faydalıdır.

Python

# Bir neçə tapşırıq əlavə edirik
schedule.every().day.at("09:00").do(my_task)
schedule.every().monday.at("10:00").do(my_task)

# Bütün aktiv tapşırıqlara baxış
for job in schedule.jobs:
    print("Tapşırıq:", job)

Bütün tapşırıqların cədvəldən silinməsi

Cədvəli təmizləmək və bütün planlaşdırılmış tapşırıqları silmək üçün clear() metodundan istifadə etmək olar.

Python

# Bir neçə tapşırıq planlaşdırırıq
schedule.every().day.at("09:00").do(my_task)
schedule.every().hour.do(my_task)

# Cədvəlin təmizlənməsi
schedule.clear()

Tapşırığın yalnız bir dəfə yerinə yetirilməsi

Bəzən tapşırıq yalnız bir dəfə müəyyən vaxta yerinə yetirilməlidir. Belə tapşırıq yerinə yetirildikdən sonra schedule.cancel_job(job) metodundan istifadə edərək onu ləğv etmək olar.

Python

def one_time_task():
    print("Tapşırıq bir dəfə yerinə yetirildi")
    return schedule.CancelJob  # Tapşırıq yerinə yetirildikdən sonra ləğv edilir

# Tapşırığı yalnız bir dəfə yerinə yetirilməsi üçün planlaşdırırıq
schedule.every().day.at("09:00").do(one_time_task)

while True:
    schedule.run_pending()
    time.sleep(1)

5. Real istifadə ssenariləri

İndi bir az ciddi olaq: bu cür avtomatizasiyalar peşəkar mühitdə necə tətbiq olunur? Real həyatda tapşırıqların planlaşdırılmasını aşağıdakılar üçün istifadə edə bilərsiniz:

  • Hər gün və ya hər həftə avtomatik məlumatların toplanması.
  • Hesabatların müəyyən gün və saatda yaradılması və göndərilməsi.
  • Serverinizin və ya veb-interfeysinizin vəziyyətinin izlənməsi və xətalar haqqında xəbərdarlıqlar.
  • Məlumat bazasının müntəzəm backup-larının başladılması.

Tipik səhvlər

Tapşırıqları planlaşdırarkən vaxt sinxronizasiyasına diqqətli olun, məsələn, əgər serveriniz və lokal kompüteriniz fərqli vaxt zonalarındadırsa. Həmçinin, əgər skriptiniz təsadüfən dayanırsa, planlaşdırılmış tapşırıq yerinə yetirilməyəcək. Monitoring alətlərindən istifadə edin, məsələn, cron (Unix-oxşar sistemlər üçün) və ya Windows Task Scheduler.

Əgər təsadüfən time.sleep(1) kodunu dövrənin sonunda qoymağı unutsanız, prosessoru dayanmadan yükləyən və hiperaktiv bir kod yaradan proses əldə edəcəksiniz. Ümumilikdə, skripti işlək vəziyyətdə saxlamağı unutmayın.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION