クックブック : ZODBの定期pack
アクセスカウンタの件に関連して。定期的にpackを行う方法 :
<dtml-try>
<dtml-call "PARENTS[-1].Control_Panel.Database.manage_pack(days=7.0)"> ZODB packed.
<dtml-except FileStorageError> ZODB not packed.
</dtml-try>
こんなDTMLメソッドを作ってみる。manage_pack(days=...)でundoを残す日数を指定する。サイズが縮まらないときもFileStorageErrorを返してくるのでトラップしてやる。
DTMLメソッドを作ったら、Proxyタブの中でManagerロールをつけてしまおう。こうすれば外部から実行するのにパスワード認証が要らなくなる。どうしても不安だったらREMOTE_ADDRなんかを見て、特定ホストからリクエストされたときのみ実行するよう修正してもいい。 あとはこれをcron + wgetとかで起動してやる。使ったことないけどZSchedulerってのも使えるかな?
http://www.zope.org/Members/lstaffor/ZScheduler/README.txt
ただ、これでZODBの肥大化は防げるとはいえ、山のようなchangePropertiesの中で目的のundoを探すのは大変かもしれない‥‥
コメント
| Last edited Mon, 11 Sep 2006 15:39:56 +0900 | Edit this page |