How can I pass parameters to schedule?
The function I want to get called:
def job(param1, param2):
print(str(param1) + str(param2))
How I schedule it:
schedule.every(10).minutes.do(job)
How can I pass a parameter to do(job)
?
In general with this kind of thing you can always do this:
schedule.every(10).minutes.do(lambda: job('Hello ', 'world!'))
Looking at the source:
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)
We see that you can also do this:
schedule.every(10).minutes.do(job, 'Hello ', 'world!')
Or, as the code suggests, an alternative to the generic lambda
method is:
schedule.every(10).minutes.do(functools.partial(job, 'Hello ', 'world!'))