タグ

anyeventに関するoinumeのブックマーク (7)

  • おさかなラボ - Coroでより賢い非同期クローラを作る

    前回のエントリでは簡単なクローラの作り方を説明した。しかしこのクローラには欠点があり、取得したいURLが何千何万とある場合、一度にhttp_getが走ってしまい、リソースを使い切ったり同じサーバーへのアクセスを待つ間にタイムアウトしたりと都合が悪かった。そこで今回はAnyEventに加えCoroを使うことにより、並列を使ってリソースへの同時アクセス制限を行うクローラの書き方を解説する。 これは前回のエントリの改良版になるので、初めてこれを読む方は当該エントリを先に読んで頂きたい。 まず、前回はAnyEventを使い、condvarとsend-recvを使ってイベントの監視をしていたが、Coroと同時に使う場合これでは都合が悪い。イベントループを回す場合、一般的にAnyEventはrecvを、Coroはjoinを使うが、これらはどちらもイベントループが終わるまでブロックするのでどちらかし

  • AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったこと

    AnyEvent と Coro を使って、WEB から非同期に並行ダウンロードするプログラムの習作を作ってみた。http://kaede.to/~canada/doc/wiser-clawer-sample-using-coroをだいぶ参考にさせてもらっている。紹介されている非同期クローラはとてもいいのだが、自分がやろうとしていることを考えると、次の点がちょっと気になった。 対象 URI のリストは一千万オーダになる あらかじめメモリ上に列挙しておいていいのだろうか URI の数分のスレッドを起こしていいのだろうか 名前解決すると同一 IP アドレスになるホストが少なくない 同時リクエスト制限をかけるのはホスト名ではなく IP アドレスがいいのではないだろうか ということで、次のような特徴を持つスクリプトを書いてみた。 最大同時接続数の制御にはセマフォを使うのではなく、その数 (20 なら

    AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったこと
  • 第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp

    イベントループを持つモジュールが抱える問題点 イベントループを持つモジュールの一例として、前回はPOEを取り上げましたが、もちろん同じようなループを持つモジュールはほかにもあります。 たとえば1995年に故ニック・イング・シモンズ(Nick Ing-Simmons)氏が始めたPerl/Tkや、POE誕生前夜の1997年から開発が行われているGtk(のちのGtk-Perl⁠)⁠、その後継にあたるGtk2/GlibのPerlバインディング(2003年)など、GUIアプリケーション関連のツールがそうですし、IO::Poll(1997年)やIO::Async(2007年)のようなモジュールにもイベントを監視するためのループが使われています。また、Event(1997年)やlibeventのラッパであるEvent::Lib(2004年⁠)⁠、EV(2007年)のように、イベントループそのものを実装す

    第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp
  • AnyEvent::Twitter::Chirp を書いた - punitan (a.k.a. punytan) のメモ

    ChirpUserStreamsを簡単に使えるようにしてみました レポジトリ GitHub - punytan/AnyEvent-Twitter-Chirp: DEPRECATED INSTALLATION % git clone git://github.com/punytan/AnyEvent-Twitter-Chirp.git % cd AnyEvent-Twitter-Chirp/ % perl Makefile.PL % make % make test % sudo make install ChirpUserStreamsって何?という方はこちらを Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件 - すぎゃーんメモ これを簡単に使えるようにしたモジュールです ドキュメント % perldoc AnyEvent::Twitte

    AnyEvent::Twitter::Chirp を書いた - punitan (a.k.a. punytan) のメモ
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Client Challenge

  • 面白ラボBM11(ブッコミイレブン) 2009: AnyEvent用便利モジュール3本パック

    Perl で非同期なイベントベースアプリケーションの開発をしようとした場合、これまでは POE を使用するのが一般的でした。 しかし最近ではこの POE に代わり、AnyEvent というフレームワークの人気が急速に高まっています。 AnyEvent は POE と比べて綺麗にコーディングすることができるイベントベースプログラミングのフレームワークというだけでなく、Coroなどと組み合わせることでより高レベルな非同期アプリケーションを書くことも可能であるといったことが人気の理由なのかもしれません。 さて、今回は弊社内部で使用するために開発した AnyEvent モジュールを三セットで公開します。 1. AnyEvent::APNS 2. AnyEvent::JSONRPC::Lite 3. AnyEvent::Gearman 順番に説明していきます。 1. AnyEvent::APNS

  • 1