FAXシステムが動かなくなった。
うーん、なにやらceleryがどうやら何かエラーを吐いている。
(マイ食ではApache&celery&djangoでfaxserver を構築しています。)
ImportError: cannot import name celeryd_multi
など謎エラー。困った時のpip update
sudo pip install -U Celery
sudo pip install -U django-celery
とりあえずこれで収まった。
続いての問題が、今度は全然POSTが動いていない。
なんでだろうと、djceleryのソースコードを見てみてデバッグしていると、QueryDICTが空っぽ。
どうやらdjango1.5以上から仕様の変更により
QUERY_DICTにheaderでContent-Typeをきちんと指定していないとrequest.POSTの中身自体が
空っぽになるみたいだ。
それだ!!
ということでceleryに問題が無いことがわかったので、
POSTする側(呼び出し側)に'Content-Type': 'application/x-www-form-urlencoded'
を追加する。
以下のようなpythonのPOSTでdjango v1.5以降のPOSTも動く。以前まではheaderを定義しても動いていた。
なお、次のようにすればpythonでPOSTができる。シンプルだ。
conn = HTTPConnection( url ) |
無事解決!
おしまい。
株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house