Shivam Agrawal
Shivam Agrawal

Reputation: 2103

How to pass argument while calling a function using schedule library?

I am wondering if someone can help me in how to pass the argument while calling the job function using the schedule library. I see there are couple of example on the same but nothing when you are using the threading and run_threaded function.

In the below code snippet i am trying to pass the 'sample_input' as an argument and confused how to define this parameter.

def run_threaded(job_func):
job_thread = threading.Thread(target=job_func)
job_thread.start()

@with_logging
def job(input_name):
    print("I'm running on thread %s" % threading.current_thread())
    main(input_name)

schedule.every(10).seconds.do(run_threaded, job(‘sample_input’))

Upvotes: 1

Views: 2902

Answers (1)

Vivek Harikrishnan
Vivek Harikrishnan

Reputation: 866

You could get by altering the method definitions and invoke signatures to something similar below.

# run_threaded method accepts arguments of job_func
def run_threaded(job_func, *args, **kwargs):
   print "======", args, kwargs
   job_thread = threading.Thread(target=job_func, args=args, kwargs=kwargs)
   job_thread.start()

# Invoke the arguments while scheduling.
schedule.every(10).seconds.do(run_threaded, job, "sample_input")

Upvotes: 3

Related Questions