Project

General

Profile

バグ #932

periodイベントが2回発火している

Added by Osamu Koga over 3 years ago. Updated over 2 years ago.

Status:
終了
Priority:
通常
Target version:
プラグイン名:
ブランチ:
クラッシュする:

Description

以下のプラグインをインストールして試した所、on_periodが連続して2回実行されていました。間隔は1分のようです。

Plugin.create :period_test do
  on_period do
    puts Time.now
  end
end

Related issues

Related to バグ #916: 定期的にfollowアクティビティが大量に生成される終了toshi_a 初音Actions
#1

Updated by Osamu Koga over 3 years ago

  • Related to バグ #916: 定期的にfollowアクティビティが大量に生成される added
#2

Updated by Satoshi Okuno over 2 years ago

  • Assignee set to Osamu Koga

http://moguno.hatenablog.jp/entry/2015/03/28/161212

on_periodはアカウントごとに発生するので、アカウント関係なく1分周期を作りたいならば下記記述が良いとおもいます。

  on_period { |service|
    if service == Service.primary
      # やりたいこと
    end
  }

(貴意外していたらすみませんがコメントお願いします。)

#3

Updated by Osamu Koga over 2 years ago

  • Status changed from 新規 to レビュー待ち
  • Assignee changed from Osamu Koga to toshi_a 初音

既知の問題だったんですね。この現象自体は #916 を追っているときに気づいただけで、フォローイベント大量生成と関連があるかと思っていたのですが、結局別々の問題だったようです。
今の挙動はイベント名とうまく噛み合ってない気がしますが、それぞれのServiceだけにイベントを送るようにするのも簡単ではなさそうですし、World対応で色々変わりそうなので、とりあえずは放置しておくのが良さそうですね。

#4

Updated by toshi_a 初音 over 2 years ago

名前が適切でないという問題はそうなんですが、当初このイベントは一定時間ごとにホームTLやMentionをポーリングするために用意されたものでした。なのでService毎に呼ばれるのは自然なのですが、mikutter 3.0までそのことを忘れていたmikutter作者が、periodを毎分の定期実行のために利用するという誤用を流布しており、厳しい状態です。
Worldの実装が進んできて、periodはすべてのServiceではなく、Twitter Worldの数だけ呼び出すという風にしないと互換性が取れないことが分かってきています。
いっそ実行間隔などを設定できるなどの改良をした仕組みを用意したほうがいいかなとぼんやり考えていたのですが、このチケットを見てperiodは禍根になりそうという気持ちを新たにしました。イメージとしては

timer 1, :minute do
  # 1分毎
end

みたいなのが使いやすいかなと思ってたんですが、まだいろいろ考えている段階なので、こんなこともやりたい、といった要望を上げてもらえば、考慮するかもしれません。今は無理なので後で新たにチケット作ると思いますが、先に意見があればここにどうぞ

#5

Updated by toshi_a 初音 over 2 years ago

  • Status changed from レビュー待ち to 終了

本題は解決しているので、closeします

Also available in: Atom PDF