URLGrabberでFatal Python error: deallocating None

URLGrabberで数千件のURLをkeep-aliveで取得しようとすると、大体同じような回数でFatal Python error: deallocating Noneが出ることがあります。

どうやら、PycURLの参照カウントの問題らしいです。

パッケージでインストールされるものは古いので、PycURLを最新のソースからインストールしなおしましょう。以下、環境はDebian squeeze+python 2.6。

python-pycurlをすでにインストールしている場合はアンインストールしておく必要があります。

# aptitude install python-pycurl
でインストールしている場合は、
# aptitude purge python-pycurl
でアンインストールしておきましょう。

pycurlは最新のものをsourceforgeのCVSからダウンロードします。

SourceForge.net Repository – [pycurl] Index of /pycurl
下の方にある、「Download GNU tarball」のリンクからtarファイルをダウンロードできます。
ダウンロードしたファイルをpycurl.tar.gzなどに名前変更して、tar xvzf pycurl.tar.gzで展開できます。

ビルドにはcurl-configとPython.hなどが必要なので、必要なパッケージをインストールしておきます。

# aptitude install python2.6-dev libcurl4-gnutls-dev

pycurl.tar.gzを展開したら
# cd ./pycurl/
# python setup.py install
で、インストール完了です。

ちなみに、python2.6-devをインストールしていないと、
src/pycurl.c:42:20: error: Python.h
のようなエラーが大量に出ます。

とりあえずこれで、今のところ安定動作しています。


タグ:

新しく会社作りました!

コメントをどうぞ