これができると嬉しいこと サーバとクライアントがひとつのプロセスにまとまってクローラー的なプロセスが必要なくなり、監視せずに済むので地味に嬉しい 概要 言われてみれば何だ、という程度ではあるけれども、app.psgiで Twiggy::Server を使い、コネクションを AE::timer で監視し、AE::cv->recv; するという方法をつかえば Tatsumaki::MessageQueue も使えて万々歳。これがなかなか思いつかなかった… 思いつかなかった言い訳 Twitter の userstream は時々切れるので再接続の処理をする必要があった。今までずっとクローラーで while ループ回したりしてたけれども、 while を使って接続が切れるごとに ->recv してるとサーバと一緒に動かすことができなくて悶々とした日々を過ごすこと数ヶ月。 サーバでは builder
2010年09月01日03:00 カテゴリLightweight Languages perl - 勝手に添削 - Webサイト死活管理 やはり必要以上にゆるいと感じたので。 PerlスクリプトでWebサイト死活管理 - ゆーすけべー日記 リダイレクトはエラー扱いに 以下、問題と感じたところ。 $ua->is_success は300番台でも成立する LWP に限らず User Agent のほとんどはデフォルトではリダイレクト先まで見に行ってしまう このままだと以下のような場合もOKになってしまう。 % lwp-request -S -mHEAD http://www.dan.co.jp/~dankogai/hijitsuzai HEAD http://www.dan.co.jp/~dankogai/hijitsuzai --> 302 Found HEAD http://blog.li
AnyEventでの簡単なFIFOキューの作り方 まぁ考えてみれば単純な話ですけど、いわゆるGuardを使うとよいです。参考はAnyEvent::HTTP コールバック$cbの最初の引数をguard変数にしておき、キューの1スロットを使用している間はこのguard変数をundefしないようにしておく感じです。 use strict; use AnyEvent; use AnyEvent::Util; my @q; # 実際にコールバックを入れておくところ my $ACTIVE = 0; # 現在の使用中スロット my $MAX_ACTIVE = 1; # 最大何個のコールバックを「同時」に行うか(もちろん本当に同時じゃないよ!) sub drain_queue { while ( @q && $ACTIVE < $MAX_ACTIVE ) { if (my $cb = shift @q)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く