3

私はdjangoでapschedulerを実行していますが、動作しているようです...大丈夫です。プロジェクトのinit .py で、スケジューラを初期化します。

scheduler = Scheduler(daemon=True)

print("\n\n\n\n\n\n\n\nstarting scheduler")

scheduler.configure({'apscheduler.jobstores.file.class': settings.APSCHEDULER['jobstores.file.class']})
scheduler.start()

atexit.register(lambda: scheduler.shutdown(wait=False))

これに関する最初の問題は、このコードが 2 回実行されていることが表示されることです。次に、他のアプリケーションでスケジューラを参照したいのですが、その方法がわかりません。スケジューラの別のインスタンスを取得した場合、それは別のスレッドプールであり、ここで作成されたものではないと思います。

  1. apscheduler のインスタンスを 1 つだけ実行するにはどうすればよいですか?
  2. 他のアプリでそのインスタンスを参照するにはどうすればよいですか?
4

1 に答える 1

3
  1. それは、最初に 2 つのスケジューラ インスタンスをどのようにして作成したかによって異なります。ワーカー スレッド/プロセスで apscheduler を起動していますか? そのようなワーカーが複数ある場合は、スケジューラの複数のインスタンスを取得することになります。そのため、可能であれば別のプロセスでスケジューラを実行するか、スケジューラの起動に何らかの条件を追加して、スケジューラが複数回起動されるのを防ぐ方法を見つける必要があります。

  2. あなたはそうしない。変数は各プロセスに対してローカルです。できる最善の方法は、ある種の ReST サービスまたは execnet や rpyc などのリモート制御システムを使用して、ある種のリモート実行システムを構築することです。

于 2014-05-07T10:45:23.290 に答える