ほぼPython

Not技術ブログBut勉強ブログ 内容には誤りがあることが多いです

PythonのTinyDBを使ってキャッシュっぽい機能をつくる。

PythonのモジュールにTinyDBというものがあります。

これは、指定したデータをjsonファイルで保存してくれて、簡単なデータベースとして使えます。

 

さて、ぷちばず検索でTwitterAPIを使ってツイートを検索する際に、すぐにAPI制限に引っかかってしまうため、誰かがアクセスしたら、その時に取得したツイートリストをデータベースに保存して、15分間はそのデータベースから読みこむという処理をしています。15分経つと、またAPIを使ってツイッターにアクセスします。(ちなみに、HEROKUはアクセスが無いと30分でデータベースは消えてしまいますが、今回はずっと保持していたいデータなわけではないので問題ない)

 

こんな感じの機能をキャッシュというっぽい(要出展)ので単体で、この機能だけのコードを書いてみました。

 

今回は、コードが実行されるとi=0からi=100000000まで計算されるという重い処理をしています。しかし、30秒以内にもう一度コードが実行された場合、データベースから読み込むので計算せずに済み、処理が早くなります。

 

初回実行時

f:id:short_4010:20180704224004j:plain

 

これを見ると、実行に15秒くらいかかっていることがわかります。

 

 

30秒以内にもう一度実行した場合

f:id:short_4010:20180704224013j:plain

 

これを見ると、0.4秒で実行が完了していることがわかります。

 

キャッシュを使えば、処理の時間を短縮出来たり、APIの使用回数を減らせたり、いいことがたくさんですね。

 

ソースも載せておきます。