私はwebpy(webpy.org)を使ってアプリを書いた。このWebアプリケーションの一部は、統計機能のための定期的なバックグラウンドタスクです。私はAPScheduler
pythonライブラリを使ってcronスタイルのスケジュールを実行しました。 app.run()
は、開発中にwebpyをスタンドアロンモードで実行させるためです。この設定はうまくいきました。cronタスクを使用したuwsgiウェブアプリ?
しかし、デプロイされると、APSchedulerが機能しなくなったことがわかりました。配備手順は、ほとんどthis articleに従います。私のエントリーポイントプログラムは、依然として成功したスケジュールログを出力します。しかし、uwsgiは要求が受信されないときに実行中のwebpy appを中断して(スレッドを中断させる)ように見えます。ページをリフレッシュすると、APSchedulerはウェイクアップして、いくつかのメッセージを印刷します(WARNING:apscheduler.scheduler:Run time of job "worker (trigger: cron[...], next run at: ..)" was missed by 0:04:36.389705
)。彼らはスケジュールに従って実行されていません。
私の質問は、uwsgi webpyアプリケーションをデプロイするときにcronスタイルのタスクをスケジュールする方法です。私はuwsgi自体がcronサポートを持っているのを見た。しかし、私はAPScheduler(またはそれを置き換える)のように私のアプリとどのように混在させることができるのだろうか?タスクは、アプリケーションのいくつかのモジュールと動的プロパティに依存するため、スタンドアロンの.pyプログラムに簡単に変換することはできません。
で--enable-スレッドはありがとうと、あなたはそれらを有効にする必要があります!それは今働いている。 –
あなたは私の日を救った。 –