0

Django アプリケーションのメソッドを 60 秒ごとに定期的に呼び出したいと考えています。これは非常に単純な作業であり、Timer. ここに私のコードがあり、それは__init__.py私のアプリの1つにあります:

from threading import Timer

def hello():
    print "xxx"
    Timer(60, hello).start()

Timer(60, hello).start()

このコードは、Django がアプリをインポートするときに呼び出されます。

これは、runserverコマンドを実行すると正常に動作するように見えます.60秒ごとに2行のコンソール出力が表示され続けるため、この開始の2つのインスタンスが実行されているようです. これは、run server コマンドが複数のプロセス/スレッドを実行するためだと思いますが、正しいですか?

一度にタイマーのインスタンスのみが実行されるようにするにはどうすればよいですか?

4

1 に答える 1

2

コードを定期的に実行する正しい方法は、django コマンドを実行する cron ジョブを設定することです。runserverApache で実行している場合は、www-data ユーザー (または、開発モードの場合はおそらく自分のユーザー)の cron ジョブを設定する必要があります。これにより、コードが Web コードと同じ権限と所有権で実行されることが保証されます。 .

django-cronを使用して作業を簡単にすることもできます (特に Windows で実行している場合)。

于 2013-02-06T07:57:12.393 に答える