PythonのScheduleモジュールを使ってTwitterに時報を吐き出してみた。

Linuxにはcronが有るけども、Windowsにはcronがないので、Windowsで定時起動させたいときにはScheduleモジュールと言うのがあるらしい。

cronは、定時にアプリを動かすには便利だけども、インターバルは出来ないので、覚えておこうと思う。

LIVA君(LINUX MINT)からPython+tweepy+cronで時報をお知らせするようにしました – happyman web

1. Scheduleモジュールの主な条件設定の方法

【Python】Scheduleモジュールを用いたイベント定期実行|指定時間動作のスケジュール関数作成例と使い方解説

2.cronを使わない時報を作ってみる。

またtweppyを使って、時報を垂れ流すbotを作ってみます。

00分はcronでやっていますので 、30分を作ってみます。

#ライブラリをインポート
from my_module import haptweepyapi
from pprint import pprint
import schedule
from time import sleep
import datetime

#タスク設定
def task(work):
  # 時刻を取得
  datetime_dat = datetime.datetime.now()
  time_str = datetime_dat.strftime('%H:%M')

  # ★メッセージを指定
  message = "窓際おじさんのはぴぞうが"+time_str+"をお知らせします。"

  # 関数
  def CreateTweet(message):
    tweet = haptweepyapi.ClientInfo().create_tweet(text=message)
    return tweet

  # 関数実行・結果出力
  pprint(CreateTweet(message))

# スケジュール登録
schedule.every().hour.at(":30").do(task,work="CreateTweet(message)")

# イベント実行
while True:
    schedule.run_pending()
    sleep(1)

こんな具合にやってみました。

スケジュールさせたいものを、全部一つのtask(work)関数にしてやって、スケジュール登録でworkの中に、コマンドを記載すると上手くいくみたい。

3.バックグラウンドでアプリを動かす。

コマンドラインで、起動はするのですがシェルを閉じるとこのアプリが止まってしまうので、バックグラウンドで動かしてみます。

【Python】ソースコードをバックグラウンドで実行する方法|ゆうまるブログ

このサイトを参考にしました。

プロセスを起こす

nohup python スクリプト名 &

動いているプロセスを確認する

ps u

プロセスを切る

kill -KILL PID

そんな具合で覚えておくと良いらしい。

できました!。