반응형
파이썬 프로그램을 백그라운드로 실행할 때, 특정시간 마다 배치 프로그램이 돌아가게 하려면, 아래 link와 같은 스케쥴 모듈을 사용해야 한다.
나는 스케쥴링 모듈 중에서 schedule 모듈을 사용했다.
(자세한 사항은 하기 link 참조)
https://lemontia.tistory.com/508
특정시간대에 작동하도록 할 때, "do(함수명)" 를 사용하는 것은 알겠는데, 아무리 구글링을 해도 do로 실행되는 함수에 "인자"를 전달하는 방법은 찾지 못했다.
그러다가 do 함수에 대한 내용을 보니, 실행되는 함수에 인자를 전달하는 방법은 "do(함수명, 인자)" 로 하면 된다.
def do(self, job_func, *args, **kwargs):
"""
Specifies the job_func that should be called every time the
job runs.
Any additional arguments are passed on to job_func when
the job runs.
:param job_func: The function to be scheduled
:return: The invoked job instance
"""
self.job_func = functools.partial(job_func, *args, **kwargs)
try:
functools.update_wrapper(self.job_func, job_func)
except AttributeError:
# job_funcs already wrapped by functools.partial won't have
# __name__, __module__ or __doc__ and the update_wrapper()
# call will fail.
pass
self._schedule_next_run()
self.scheduler.jobs.append(self)
return self
예를 들어, send(text)라는 명령을 매일 오후 1시에 실행시킨다면, 아래와 같이 코드를 작성하면 된다.
send(text) => do(send, text)
schedule.every().day.at("13:00").do(send, text)
반응형