পাইথন আমাদের একটি জেনেরিক শিডিউলার দেয় নির্দিষ্ট সময়ে টাস্ক রান করার জন্য। আমরা schedule নামক একটি মডিউল ব্যবহার করব। এই মডিউলে every ফাংশন ব্যবহার করে ডেজায়ারড শিডিউল পাওয়া যায়। নিচে every ফাংশনের ফিচারগুলো দেওয়া হলো।
সিনট্যাক্স
Schedule.every(n).[timeframe] এখানে n হলো টাইম ইন্টারভ্যাল। Timeframe হতে পারে – seconds, hours, days বা এমনকি সপ্তাহের দিনের নাম – Sunday, Monday ইত্যাদি।
উদাহরণ
নিচের উদাহরণে আমরা schedule মডিউল ব্যবহার করে প্রতি কয়েক সেকেন্ড পর বিটকয়েনের দাম ফেচ করব। এছাড়া coindesk-এর API ব্যবহার করব। সেজন্য requests মডিউল ব্যবহার করব। time মডিউলও লাগবে যাতে প্রোগ্রাম চলতে থাকবে এবং API রেসপন্সে ডিলে হলে sleep ফাংশন ব্যবহার করে অপেক্ষা করা যাবে।
উদাহরণ
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}