tetero
@tetero (tetero)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonの関数を指定時刻に実行したい

Q&A

Closed

解決したいこと

Pythonの関数を指定時刻に実行したいです。
下記のコードを実行しても、長い時間読み込んでいて、
途中で止めると下記のエラーが出てしまうのを解決したいです。
方法を教えて下さい。

発生している問題・エラー

KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-19-acee8d2758eb> in <module>()
     11 while True:
     12   schedule.run_pending()
---> 13   time.sleep(60)

KeyboardInterrupt: 
出ているエラーメッセージを入力

この記事のコードを使用しました

Pythonの関数を指定時刻に実行する方法を現役エンジニアが解説【初心者向け】
https://techacademy.jp/magazine/20872

環境

google colabratryで実行しています。

該当するソースコード

import datetime
import schedule
import time

def job():
  print(datetime.datetime.now())
  print("I'm working...")  

schedule.every().day.at("06:25").do(job)

while True:
  schedule.run_pending()
  time.sleep(60)

わかりづらいとは思いますが、よろしくお願い致します。

0

1Answer

そのコードは「現在の時刻に実行すべきタスクがあれば実行→60秒スリープ」を無限に繰り返すので、当然プログラムは動き続けます。そのエラーはプログラムに割り込んで止めたことを表すもので、これも止めれば出るのが当然です。

Colaboratory ではプログラムをずっと動かし続けることはできませんし、他の方法で関数を指定時刻に実行することもできません。

Colaboratory にこだわらなくてもいいなら、ご自分でサーバを用意してそのプログラムを動かすか、 cron などのジョブスケジューラを使ってください。 Google Cloud Scheduler などのマネージド cron ジョブサービスもあります。

0Like

Comments

  1. @tetero

    Questioner

    処理の意味がわかっていませんでした。
    止めてエラーが出る方が正常だったのですね!
    他のご提示されたものも大変参考になりました。
    ありがとうございます!

Your answer might help someone💌