5

クラス内で X 時間ごとにジョブをスケジュールしようとしています。ただし、「自己」が必要なため、現在のコンテキストをメソッドに渡す方法がわかりません。cron スタイルの場合、args 引数リストを使用できることはわかっていますが、それも機能していません。ヘルプ?

class MyClass(object):
    @settings.scheduler.interval_schedule(hours=2)
    def post(self, first_argument=None):
        # do stuff
        self.cleanup()

結果は

Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/apscheduler/scheduler.py", line 510, in _run_job
        retval = job.func(*job.args, **job.kwargs)
    TypeError: post() takes at least 1 argument (0 given)

ありがとう。

4

1 に答える 1

10

あなたはこのように行くことができます:

class MyClass(object):
    def post(self, first_argument=None):
        # do stuff
        self.cleanup()


@settings.scheduler.interval_schedule(hours=2)
def my_job(first_argument=None):
    my_class = MyClass()
    my_class.post(first_argument)

または、次のようにします。

my_class = MyClass()
scheduler.add_job(my_class.post, 'interval', {'seconds': 3}, kwargs={'first_argument': first_argument})
于 2013-08-24T18:11:54.577 に答える