ロリポップのライトプランでbottleをやり初めて3ヶ月。
ローカルサイトで実現できる簡単なことも、なぜか動かないことが多数。今回は、ファイルをアップロードして読み込むことができないことにつまづいた。
実現したいことは、
WEB画面上のformで
・対象のテーブル名を選択
・CSV形式のローカルファイルを選択(form の file)
実行ボタンで、python側でファイルを読み込んで対象のテーブルにinsertしていくという処理
pythonで記述するのは、もう慣れてきたのでささっと、ローカル上は簡単に実現できたのだけど、それをロリポップにアップロード。
そして、いつもどおり、先頭の行を、
#!/usr/local/bin/python3.4
に変更して、最終行に
run(server=’cgi’)
を追加した。
いざ動かしてみると。反応がないっていうか動いてるの???状態
しかもエラーもでない。
悩むこと3日!!!
デバッグ代わりのログ出力なんかをいれたり、あれやこれやしてもさっぱりわからなかった。もしかして、キャッシュか??と思ってロリポップのキャッシュ削除をしてみたり。。。
キャッシュを疑ったので、formの送信先のurlを変えて、@post()の処理を追加したとき、
「405 method not arrow error」
最初の頃、よく見かけたなと、思い出し、@get()を追加するとエラーが消えた。
試してるうちに、どうもリクエストのpostがgetに変わっているということ???だからファイルが読めないの???
あっ!!!!
そういえば、ロリポップで動かすには、htaccessでリダイレクトしてたっけ?最初に設定してたから、その後意識してませんでした。
そう、リダイレクトしてなんらかの条件が揃うと、postがgetに置き換わるようで、ファイルのアップロードはどうやら難しいことが判明した。
とりあえず、原因発見した途端、すごい疲労感。
解決方法は後日考えよう・・・