Drkcore

19 07 2007 Catalyst perl Tweet

Catalyst::Model::Net::Amazonでキャッシュ

昨日ちょっと気になったので触ってみた。

ヘルパーがあるので

script/myapp_create.pl create model Net::Amazon Net::Amazon

でモデル作成。yamlに

Model::Net::Amazon:
  token: 'amazon_token'
  locale: 'jp'

を設定して、Root.pmに

sub default : Private {
    my ( $self, $c ) = @_;
    my $ua = $c->model('Net::Amazon');

    my $response = $ua->search( asin => '4873112109' );

    if ( $response->is_success ) {
      $c->response->body( $response->as_string );
    } else {
      $c->response->body( $response->message );
    }

}

で、ルートにアクセスすると

[1] マーク ルッツ/デイビッド アスカー, "初めてのPython 第2版", 2004, ¥ 5,040, 4873112109

と表示される。あとは/ASIN/XXXXXXのURLでJSON返すようにすればMochikit(javascript)からいい感じで扱えるはず。うーんナイス!

さらに、Net::Amazonはキャッシュが使えるのでCatalyst::Model::Net::Amazonでもキャッシュを効かせたい。C::M::Net::Amazonに直接書いた。

use Cache::File;

use base qw/ Catalyst::Model::Net::Amazon /;

my $cache = Cache::File->new( 
                         cache_root        => '/tmp/amazon_cache',
                         default_expires   => '30 min',
                            );

__PACKAGE__->config(cache => $cache);

Net::AmazonがCache::Fileオブジェクトをとるので、このようにModelに直接書いたのだけど、cache_rootとかdefault_expiresを設定ファイルに追い出すことはできないのだろうか?

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021