0

私は Python と Bottle (および apscheduler) にまったく慣れていないので、スケジュールされたジョブを実装するための簡単な手順を教えていただければ幸いです。

私は、Web サイトの 1 つに表示されるステータスとデータを確認できる Python コードをいくつか書きました。ステータスをメールで送信するコードもいくつか書きました。

ここで、このコードを定期的に (たとえば 15 分ごとに) 呼び出す機能を追加したいと考えています。このためには、apscheduler が適切で軽量な自己完結型のソリューションのようです。

私が知りたいのは:

  • Bottle Web サイトの開始時に BackgroundScheduler を開始できますか? (「起動」コードはどこにありますか?)
  • また、BackgroundScheduler のインスタンスをグローバルにすることはできますか? その理由は、サイトの他の場所からアクセスして、ジョブを追加/削除/一時停止したいからです

他の誰かがここで同様の考えを持っているのを見ました.ボトルWebフレームワークでタスクスケジューラを実行することは可能ですが、詳細と答えは私のような初心者には詳細が少なすぎます.

おそらく sleep() を使用して同様のことを行うことができることは理解していますが、最初に apscheduler オプションを調べたいと思います。

Celery も調べましたが、私が構築しているこの小さな単一目的の Web アプリケーションにはやり過ぎだと思います。

Visual Studio 2013 で利用可能な Bottle プロジェクトを使用していることを付け加えておく必要があります。これには、特定の構成とファイルが既に含まれています。

4

2 に答える 2

0

@アレクサンダー:私もこれをしました。Botte WSGIRefServer()で動作します。ここでは、好きなだけスレッドを存続させることができます。mod_wsgiを使用する Apache では、スレッドは非常に長い間しか実行されないはずでした。その後、スレッドは強制終了されます。そのため、ボトル内のスケジューラーは機能しませんでした。

個人的には、スケジュールされたタスクを受け取り、スケジュールパッケージを使用して実行するzmq(pyzmq)で小さなスケジュールサーバーを作成しています。私にとってはうまくいきます。

于 2017-02-01T01:48:24.010 に答える