2 つのスレッドを持つ flask アプリがあります。 1 つはスクレイピングされた情報から最新の状態に保つために flask テンプレートを変更し、もう 1 つは受信したルート リクエストを受け取る flask サーバーです。
from flask import Flask, render_template
import threading
import RunArbIfDown
app = Flask(__name__, static_url_path='')
@app.route('/')
def index():
return render_template('index.html')
if __name__ == "__main__":
threading.Thread(target=app.run).start()
threading.Thread(target=RunArbIfDown.start).start() # this line continuously updates index.html (every 60s)
アプリを確認すると、エラーはないようですが、index.html が更新されません。 heroku dyno 上のファイルを変更することはできますか?これに対する良い解決策はありますか?
------------------------
WSGI 環境でスレッドを実行すると、予期しない結果が生じる可能性があります。通常、WSGI サーバーはスレッドを管理し、いつでもスレッドを作成したり強制終了したりできます。
また、スレッド コードを __n で保護しました。雨__状態。ファイルが直接開始された場合、コードは実行されます。 WSGI サーバーはそれを行いません。ファイルはインポートされますが、条件は満たされません。
Flask で定期的なタスクを実行する一般的な方法は、cron 経由でカスタム コマンドを使用することです。これは別のプロセスとして実行されます。
3
@Klaus D さん、洞察をありがとう。cron を使用し、__name__ 条件なしでそれを行う方法を共有していただけますか?
– ジェシー・レザー・ホラーサニー
2020 年 9 月 3 日 3:33
質問の中で、このセットアップはローカルでは正常に動作しますが、heroku では正常に動作しないことを言及すべきでした。
– ジェシー・レザー・ホラーサニー
2020 年 9 月 3 日 3:34
この質問は、stackoverflow.com/questions/63749430/… で、より再現性の高い質問に変更しました。
– ジェシー・レザー・ホラーサニー
2020 年 9 月 5 日 0:41