thirose’s blog

openstackやpythonなどなど

Python

json.dumpsした値が期待した通りか確認するunittest

python3.7以前の辞書(dict)とJSONオブジェクトは順序立てられてません。 今回はだいぶ古いpythonなため、順序立てられていませんでした。 そのため、dictをjson.dumpsしたりすると、順番が崩れたりします。 オプションとして、 json.dumps(dict, sort_keys=T…

Drone CIで Python-MySQLを使おうとしたら少しハマったのでその対応

今までunittestとかなかったpython2で動いてたスクリプトがあって、あまりにも変更するのが怖いからとりあえずテスト書いて、CIで動くと便利だよねーって思い DroneCIの設定を始めました。 まずはこんな感じかなとdrone.ymlを準備しました。 --- kind: pipel…

特定のIPだけ許可したい時の判定方法

プライベートクラウドを運用していると、当然 DNS as a Serviceなんかも提供することになるのですが、OpenStackでは、Designateが第一選択肢として上がると思います。 そして、プライベートクラウドで外部IPを登録されてしまっては困るので、そういった部分…

python で json.loads() したときに 特定の制御文字列が入ってるとJSONDecodeErrorが返ってくる

問題 今回は以下のような文字列を json.loads() してみたときにおきた問題があったときの対応をまとめました。 sample_text = '{"key": "value \t value"}' 再現させる >>> import json >>> sample_text = '{"key": "value \t value"}' >>> >>> json.loads(s…

flask+gunicornでgeventを使い、非同期処理にする

flask+gunicornなバックエンドでworker-classがデフォルトのsyncで同期処理をしていたのを非同期処理ができるように設定を変更しました。 同期処理の何が問題かというと、backendの処理に時間がかかる and プロセス数以上にリクエストがきてしまった場合、pr…

Designateのビルドをしてたら、UnicodeEncodeErrorがでてきた

今回はOpenStackのDesignateでおきたエラーですが、他のミドルウェアでも起きる可能性はなくないと思うので、エラーとその対応をまとめます。 今回はpythonの2.7.13が必要だったけど、CentOSのpythonが2.7.5だったため、pyenvを入れて対応しようとしていた時…