2017-06-01 14 views
-4

選択した日までに自動的に機能をスケジュールする必要があります。だから私はこの関数のスケジュールを使用しましたが、スケジュールオブジェクトに引数を動的に渡すことはできません。誰かがそれを達成する方法を知っているなら、私に解決策を教えてください。私のコードは以下の通りです:オブジェクトにパラメータを動的に渡す方法は?

月曜日に動作し、スケジュールされていますが、リストから値を渡すとエラーが発生します。

import schedule 
def job(ip_id): 
    print "Schedule started" + ip_id 
ip_id = 1 
sname = "weekly" 
cron = [monday, wednesday, sunday] 
for i in cron: 
    sched = schedule.every().i.do(job, ip_id).tag(sname) 

どのようにその場所に価値を渡すのが私の問題ですか?

+0

"問題の問題は何ですか?"全体としての質問はほとんど意味がありません。あなたの 'cron'リストには' monday'と 'wednesday'と' sunday'とは何ですか?あなたの 'jschedule.every()'は何ですか?あなたは 'every()'にアクセスするために 'monday'、' wednesday'、 'sunday'の後ろの値を使いたいのですか、変数名を好きですか?これのどれも正しいとは思えず、文脈があまりにも狭すぎる。 –

+0

'job()'は引数なしでもかまいません。呼び出し時、別の場所( 'ip_id'が格納されている場所)から引数を取得できます。または、do(..)の引数として 'lambda:joib(ip_id)'を閉じることができます。 –

+0

@ Paul-AG彼の質問は、変数 '.every()私は。 – Barmar

答えて

1

ここにはマジックはありません。 "monday"は属性が不足している唯一の名前です。

import schedule 

def job(*a, **k): 
    pass 

ip_id = 0 
sname = "sname" 

cron = ['monday', 'wednesday', 'sunday'] 
for i in cron: 
    sched = getattr(schedule.every(), i).do(job, ip_id).tag(sname)