Skip to content

Instantly share code, notes, and snippets.

@alirezapla
Last active October 18, 2022 18:17
Show Gist options
  • Save alirezapla/5b2a1868e888c6125a08205c25bbf0be to your computer and use it in GitHub Desktop.
Save alirezapla/5b2a1868e888c6125a08205c25bbf0be to your computer and use it in GitHub Desktop.
import schedule
import time
"""
period interval
input-> 12:22 hours,...
input-> :22 seconds,...
input-> 12 minutes,...
"""
class MySchedule:
def __init__(self, interval: str, period: str = None):
self.scheduler = schedule.every
self.interval = interval
self.period = period
def __call__(self, task):
return self.get_interval.do(task)
@property
def get_interval(self):
_prd = self.get_period
self_prd = self.period
if ":" not in self.period:
_interval_s = {
"DAYS": _prd.days,
"HOURS": _prd.hours,
"MINUTES": _prd.minutes,
"SECONDS": _prd.seconds,
}
return _interval_s[self.interval]
_interval = {
"DAYS": _prd.day if self_prd is None else _prd.day.at(self_prd),
"HOURS": _prd.hour if self_prd is None else _prd.hour.at(self_prd),
"MINUTES": _prd.minute if self_prd is None else _prd.minute.at(self_prd),
"SECONDS": _prd.second if self_prd is None else _prd.second.at(self_prd),
}
return _interval[self.interval]
@property
def get_period(self):
if ":" not in self.period:
return self.scheduler(int(self.period))
return self.scheduler()
def job():
print("I'm working...")
MySchedule("SECONDS", "4")(job)
while True:
schedule.run_pending()
time.sleep(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment