したいこと
Docker上でFlaskサーバの起動時に、スレッドで定刻になったら処理が走る関数を動かしたいです。
ソース
run.py import schedule def test_schedule(): schedule.every().day.at("00:00").do(呼び出したい関数) while True: schedule.run_pending() time.sleep(3600) #1時間に1回くらいチェックして0時になったら実行してほしい if __name__ == '__main__': thread_1 = threading.Thread(target=test_schedule) thread_1.start() app.run()
上記のように記載しているのですが、
docker-compose up -d 以降、この関数は一度も呼ばれないです。
時間を今現在にしてみたり、time.sleepの時間を短くしてみましたがダメでした。
エラーが出ているわけではなく、単純にこのスレッド関数が動いていないようなので
どう書けば実行してくれるのか、ご存知の方ご教示いただきたいです。
試したこと
こちらの内容も試してみましたが、
スレッドではないので一度起動してしまうと、定刻になるまで他の処理が動かない状態になっていました。
https://zhuanlan.zhihu.com/p/26415908
追記
そもそもの話ですが、
if __name__ == '__main__': thread_1 = threading.Thread(target=test_schedule) thread_1.start() app.run()
この表記で、thread_1.start()は呼ばれるのでしょうか。
この状態だと、run.pyが呼ばれてサーバが立つ前に関数が動きはじめて、
それに続くようにサーバが立ち上がるとの認識で記述していましたが、その認識で間違いはないでしょうか。
(今動かないのはDocker上のみで、ローカルでpython run.pyで起動するとスケジュールは正しく呼ばれます)
回答1件
あなたの回答
tips
プレビュー