« VirtualHostを設定せずにOSQAを動かしてみる | Main | OSQAのデータキャッシュの問題・・・暫定的に解決したかも? »

2011.05.31

OSQAのデータキャッシュがクリアされない

OSQAで何らかのデータを更新した際の挙動が謎・・・。

何度もページをリロードすると、更新前のページが表示されたり、更新後のページが表示されたり。2回以上更新をした場合(コメントを2つ以上登録した場合)など、前々回の状態だったり、前回の状態だったり、今回の状態だったり。

Apacheを再起動すると、問題なくなるので、おそらくキャッシュの内容が表示されてしまっているだけだと思うのですが・・・。Apacheのログを見ると、httpのレスポンスコードは200が戻されているので、ブラウザのキャッシュが悪さしているわけではないと思われるのですが(そもそも、ブラウザのキャッシュが表示されているのであれば、リロードの度にページが変わってしまうというのも不思議ですし)。

OSQAが使用しているフレームワーク(Django)にはキャッシュ機能が実装されているので、その影響かと思い、settings_local.py ファイルの内容を

CACHE_BACKEND = 'dummy://'

に書き換えてみたのですが、効果なし・・・。setting CACHE_BACKEND to dummy does not disable template caching の内容と同じような感じではあるのですが・・・。

なお、どうもDjango1.0~1.2と1.3でキャッシュの設定の仕方が変わっているっぽかったので、Djangoのバージョンを1.3から1.2.5に戻してみたのですが、現象は変わらず(OSQAは、1.2では動き、そもそも、4/19の時点では1.3では動かないようです)。

ちなみに、1.3から1.2.5に戻す方法。

# rm -rf /usr/local/share/python2.6.6/lib/python2.6/site-packages/django
# rm -rf /usr/local/share/python2.6.6/lib/python2.6/site-packages/Django-1.3-py2.6.egg-info
# http://www.djangoproject.com/download/1.2.5/tarball/
# tar zxvf Django-1.2.5.tar.gz
# cd Django-1.2.5
# python setup.py install

これと合わせて、settings_local.pyの内容も更新。
DJANGO_VERSION = 1.2

既にコンパイル済みのpycファイルをいったん削除(削除用のスクリプトが提供されています)。
sh rmpyc

1.2.5でもダメだったので、さらに1.1までバージョンを戻してみたところ、違うエラーが発生。

AttributeError: 'CacheClass' object has no attribute 'set_many'

What is the cause of this Internal Server Error? (CacheClass' object has no attribute 'set_many')によると、Djangoのバージョンが古いことが原因っぽい・・・。

ポストした内容が正しく反映されないというのは、アプリケーションとしては致命的だと思われるので、おそらくどこか設定の問題だとは思うのですが、mod_wsgiもDjangoも使うのは今回が初めてなので、どこに問題があるのかがさっぱりわからない・・・(涙)。

|

« VirtualHostを設定せずにOSQAを動かしてみる | Main | OSQAのデータキャッシュの問題・・・暫定的に解決したかも? »

Linux」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference OSQAのデータキャッシュがクリアされない:

« VirtualHostを設定せずにOSQAを動かしてみる | Main | OSQAのデータキャッシュの問題・・・暫定的に解決したかも? »