Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Event Scheduler ใน Python

Python ให้ตัวจัดตารางเวลา (scheduler) แบบทั่วไปสำหรับรันงานในเวลาเฉพาะ เราจะใช้โมดูลชื่อ schedule ในโมดูลนี้เราใช้ฟังก์ชัน every เพื่อได้ตารางเวลาที่ต้องการ ด้านล่างคือฟีเจอร์ที่มีกับฟังก์ชัน every

ไวยากรณ์

schedule.every(n).[timeframe]
ที่ n คือช่วงเวลา Timeframe สามารถเป็น – seconds, hours, days หรือแม้แต่ชื่อวันในสัปดาห์ – Sunday, Monday ฯลฯ

ตัวอย่าง

ในตัวอย่างด้านล่างเราจะดูการดึงราคา Bitcoin ทุกๆ ไม่กี่วินาทีโดยใช้โมดูล schedule เรายังใช้ API จาก coindesk สำหรับวัตถุประสงค์นั้นเราจะใช้โมดูล requests เรายังต้องการโมดูล time เนื่องจากต้องการให้ฟังก์ชัน sleep ทำงานต่อและรอ API ตอบสนอง เมื่อมีความล่าช้าในการตอบสนอง

ตัวอย่าง

import schedule
import time
import requests

Uniform_Resource_Locator = "https://api.coindesk.com/v1/bpi/currentprice.json"
data = requests.get(Uniform_Resource_Locator)
input = data.json()

def fetch_bitcoin():
    print("Getting Bitcoin Price")
    result = input['bpi']['USD']
    print(result)

def fetch_bitcoin_by_currency(x):
    print("Getting bitcoin price in:", x)
    result = input['bpi'][x]
    print(result)

# เวลา
schedule.every(4).seconds.do(fetch_bitcoin)
schedule.every(7).seconds.do(fetch_bitcoin_by_currency, 'GBP')
schedule.every(9).seconds.do(fetch_bitcoin_by_currency, 'EUR')

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

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้

ผลลัพธ์

Getting Bitcoin Price {'code': 'USD', 'symbol': '$', 'rate': '7,069.1967', 'description': 'United States Dollar', 'rate_float': 7069.1967}
Getting bitcoin price in: GBP {'code': 'GBP', 'symbol': '£', 'rate': '5,279.3962', 'description': 'British Pound Sterling', 'rate_float': 5279.3962}
Getting Bitcoin Price {'code': 'USD', 'symbol': '$', 'rate': '7,069.1967', 'description': 'United States Dollar', 'rate_float': 7069.1967}
Getting bitcoin price in: EUR {'code': 'EUR', 'symbol': '€', 'rate': '6,342.4196', 'description': 'Euro', 'rate_float': 6342.4196}
Getting Bitcoin Price {'code': 'USD', 'symbol': '$', 'rate': '7,069.1967', 'description': 'United States Dollar', 'rate_float': 7069.1967}

สรุป: โมดูล schedule ทำให้การจัดตารางงานรันเป็นระยะ (periodic tasks) ใน Python ง่ายขึ้น เหมาะสำหรับ cron-like jobs