Errcron: 0.4.4

2017-11-12(Sun) / Tech

自分用のbotを作り直してたときに、挙動の異常に気づいて修正しました。

細かい情報はこちら

更新点について

依存関係ライブラリの挙動変更対応のため、機能の追加や削除といった類ではないです。

  • CronJob.is_runnable() の挙動を parse-crontab の仕様に対してゆるい対応を行う
  • Travis-CIのテストターゲット設定が変だったので、正しくする

CronJob.is_runnable()の挙動修正

これが本題です。

Errcronでは、crontab文字列の実行可能判定を parse-crontab を用いて行っています。 コードの中身的にはこんな感じ。 (self._crontabはparse-crontabのCrontabオブジェクトです)

def is_runnable(self, time):
    if self._crontab is not None:
        return self._crontab.test(time)
    return time.strftime(self.trigger_format) == self.trigger_time

time の中身は基本的にErrbotのpollerの周期で呼ばれるため、何秒になるかはわかりません。 (一応、仕様として、30間隔でポーリングは動作し、0-29のときだけが対象です)

今まではこれで問題なく動いたのですが、先月の parse-crontab の更新時に 「秒単位のcrontab」がサポートされるようになった らしく、 CronTabオブジェクト上では、秒の値が必ず0になってしまうようになりました。

上記の通り、Errbotのpollerは必ずしも毎分0秒と30秒に呼ばれるとは限らないため、これでは動作が保証できなくなります。 今回はこのときの判定処理を改修して、 「判定時だけ、~~時xx分0秒とみなす」 という修正をしています。

def is_runnable(self, time):
    if self._crontab is not None:
        zero_time = time.replace(second=0)    # <= 秒だけ0にするdatetimeを作り
        return self._crontab.test(zero_time)  # <= timeでなく、zero_timeで判定
    return time.strftime(self.trigger_format) == self.trigger_time

Travis-CIの動作修正

Travis-CI上ではtoxでテストを実行してるのですが、全部の実行環境をpython3.6にしてしまったらしく、 それが何故かpy35のパターンのみ失敗するというよくわかってない現象 で不備に気づきました。

とりあえず正したのですが、このブログ書きながら「Python2.7のテストが何処かに消えた」ということに気づきました。 (Errbot本体がpython2.xをすでにサポートしてないので別にいいのかもしれないのですが)

教訓

依存ライブラリには注意を払わないといけない



ambieを買ったので試し中

2017-07-24(Mon) / Life

耳を塞がないタイプの「ながら」イヤホン。(ここまでオフィシャルサイト)

少し前に別のブログで名前なんかを知って、面白がって即購入した。

3日ぐらいしか経ってないけど、軽く現時点での感想をまとめてみた。 (なお普段はSHUREのse215を使ってる)

装着感 …

>>read more


チェインクロニクル4周年イベント ユグド祭

2017-07-22(Sat) / Life

気づけば3年ぐらいやってるし、近場のリアルイベントには行くので今年も。 (ただし、距離と体調の関係で昼ごろから)

去年と違って完全屋内なのもあって、かなり過ごしやすかった印象。 というか、去年は待ち行列をフロア外にしてたのが間違いだとは思う。

企画自体は今までとさほど大きな違いはないものの、見て回って貰いたい感はよく伝わるし …

>>read more


Update: errbot-cloudfront

2017-07-18(Tue) / Tech

ちょっと前に少しだけ手直しした部分の日本語メモ

プロジェクト自体はここにあります。

何を直したか?

Errbotには BOT_PREFIX というコンフィグがあり、 ここで指定した文字列から始まるメッセージのみをErrbotへの命令とみなします。 (デフォルトは !

errbot-cloudfront ではいくつかの命令に対して …

>>read more


errbot-cloudfront: first

2017-07-10(Mon) / Tech

PyCon JPのプロポーザル選考速報を見た悲しみでガーッと作りました。おおまかな動作は確認済み。

プロジェクト自体はここにあります。

何をするものか?

Errbotのプラグインで、これを導入するとerrbot経由でCloudFrontのディストリビューションの一覧取得と、 ID指定によるオブジェクトの無効化ができるようになります。

どうやって使うか

事前に必要なもの …

>>read more


errbot-pomodoro-timerの修正メモ

2017-06-11(Sun) / Tech

公開しているErrbot用のプラグイン errbot-pomodoro-timer について、 Errbot 5.0.1で使用するときに読み込み失敗するエラーがあったので修正してました。

出てたエラー

❯ errbot -c …

>>read more


GitLab Meetup Tokyo #2 でLTデビューしてきた

2017-05-16(Tue) / Tech

4/11に開催された GitLab Meetup Tokyo #2 で、勢いに任せてLT枠に突入して喋ってきました。

先月に、エンジニアとして生活して初めて …

>>read more


Macbook proがフリーズしてふと(今更)気づいたこと

2017-03-14(Tue) / Tech

仕事中にMacbook pro(Early 2015)がフリーズしてしまった。

すごく今更なんだけどもEarly 2015以降ってForce Touchトラックパッドになっている。 これはよく知られている通り、電源が入っていなければタッチしようとしても何も反応しない代物 …

>>read more


2016年振り返り

2016-12-29(Thu) / Life

(年始をまたいだので、ちょっとやっつけ)

Tech系

Errbot

なんか、目についてからえらいペースで触った気がする。 いくつかプラグイン公開してみたりして、OSSなライブラリを積極的に出しに行くきっかけになったと思う。

あとはメイン開発者のGuillaume Binetさんと …

>>read more


PyCon JP 2016に行ってた

2016-09-28(Wed) / Tech

今年も行ってきました。

YouTubeライブのアーカイブがあるので、 当日パスしたセッションを後できちんと見たり、ほとんど頭に入らなかった英語セッションの復習などに使いたい。

会場の環境的には、前回と比べてWiFi環境がよくなかったのが気になった。 とはいえ、早稲田大学の設備をそのまま借りることができたのもあるので、あんまり文句は言えないけども。

招待講演 …

>>read more


« - 1 / 9 - »