[Dd]enzow(ill)? with DB and Python

DBとか資格とかPythonとかの話をつらつらと

Python

Flaskで書かれたWEBアプリをBottleに書き換えるときの勘所

今週はISUCON7予選ですね。ここのところ毎回ですが今回もISUCON関連のネタです。ISUCONのPython実装はFlaskで作成されているケースが多いですが、これをBottleに書き換えるとパフォーマンスが上がるケースがあります。しかし書き換えにはいくつか注意点があ…

uWSGI caching frameworkを試してみる(PythonのWEBアプリケーションでのプロセス間情報共有)

今回はuWSGIのワーカプロセス間でキャッシュを共有できる、cache frameworkを試してみます。ISUCONをPythonで戦うとなると、大抵はRedisあたりだと思うのですが、それだと1プロセスで動作するGoやNode.jsに対してディスアドバンテージをもつことになるので、…

PythonでRedisを効率的に使う(redis-pyのパフォーマンスをあげるには)

前回書いたようにISHOCONというプライベートなISUCONに出てきました。MySQLの思いクエリをRedisに変えることでスコアは伸びたのですが、Redis自体もプロセスローカルのメモリに比べると遅いのでできるだけ効率的な使い方を模索しました。いつになく記事が長…

PythonでRedisを扱う(redis-pyの基本)

先日、ISUCONの練習としてISHOCONに参加してきました。ISUCONもそうですが初期実装のRDBMS部分をどれだけRedis等に移せるかでスコアの伸び方が違う気がします。少なくとも今回の問題はRedisを上手に使えるかが鍵です(少なくともPythonでは しかし、イマイチR…

Pythonのunittestで標準出力のテストを作る

最近やたらunittestを書いているのですが、標準出力部分のテストをしなければいけなくなり、やり方を確認したのでメモとして残します。 どういうことか こういう標準出力に内容を書き出す関数についてunittestを作成したかったという話です。 def hoge(): pr…

PyPIにコマンド実行可能なパッケージを登録した話

自分で作ったwsgi_lineprof_reporterをPyPIに登録した際の備忘録です。ぐぐると記事は多いのですが時期ごとに手順が異なったりするので2017/09時点で一旦まとめておきます。 また、今回はpip installするだけでOSコマンドとして実行できるようにしたかったの…

DIVE INTO EXAMのPython3エンジニア認定基礎模擬試験 β版をやってみた

なんかFacebook眺めてたら流れてきました。 Dive into Code、「Python3エンジニア認定基礎試験」の模擬問題β版を無料公開 すでにPython3エンジニア認定基礎試験は持っているのですが、無料らしいのでとりあえず受けてみました。

Pythonできれいに揃ったテキストのレポートを作りたかった

要は、SQLの結果とかでよくあるこういう整ったレポートを作るには。という話です。 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ -------- ---------- ---------- -------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 80-12-17 800 2…

Pythonで一番小さいWEBフレームワークbottle.py その5(response,mimetype)

今回はGENERATING CONTENTを中心にまとめます。 純粋なwsgiはファンクションがiterableなbyte stringを戻すように定められています。厳密にはPythonで使用されるstr(Unicode)も戻すことはできませんが、Bottleではそういった戻り値をいいかんじに変換してく…

PythonのUnitTestでメール送信を伴う場合の対応を検討してみた

1年くらい前に自分でかき捨てたコードを久々にメンテすることになったので見ていたらテストコードがなくてさっぱりでした。さてPythonでのテストの場合標準で用意されているunittestを使うことがあると思います。しかし、メール送信を伴う処理の場合、テスト…

PythonのWSGIラインプロファイラの結果を使いやすくしてみた(wsgi_lineprof_reporter)

前回はwsgi_lineprofを試してみました。WEBアプリケーションの分析にはぴったりだったのですが、ISUCONで使うには少し辛いところがあったのでスクリプトを書いてみました。

PythonのWSGIラインプロファイラを試してみた(wsgi_lineprof)

ひょんなことからISUCONに出ることになったので練習してたら休日が溶けました。ISUCONこわい。 ISUCONはWEBアプリケーションのチューニングコンテストなわけですが、そもそもAPのどこにボトルネックがあるかを見つけないと効果的なチューニングは難しいです…

Pythonを使ってWindows 上でps的な感じでプロセスの情報を取りたかった

普段業務はWindows上で行っています。Python何かを動かすときはLinux上であることが多いですが、たまにWindowsで、ジョブを動かさないといけないケースもあります。今回、ちょっとWindows上でプロセス一覧を取得しないといけないケースがあったので行った内…

Pythonで一番小さいWEBフレームワークbottle.py その4(static_file,erropage)

前回はGETやPOSTについてまとめました。今回はROUTING STATIC FILESを中心にまとめます。 静的?動的? STATIC FILEは静的ファイルという意味です。逆に動的もあります。どう違うのでしょうか。とてもざっくりいうと下のイメージです。 type memo 静的 同じU…

DjangoをsqliteからPostgreSQLに切り替えた(dumpdata/loaddata)

デフォルトのsqlite3をバックエンドDBにしたまま勢い良く作り始めたら、気がついたら結構データがたまって 動きが鈍くなったアプリがありました。 基本PostgreSQLが好きなのでSQLiteからSQL引っこ抜いてPostgreSQLにINSERTしないといけないと思っていたら Dj…

Pythonで一番小さいWEBフレームワークbottle.py その3(GET,POST)

前回はBottleのルーティングについてまとめました。 今回もルーティングに関わりますが、HTTPのリクエストメソッドとBottleでの使い方についてまとめていきます。

Pythonで一番小さいWEBフレームワークbottle.py その2(ルーティング)

前回はBottleの導入からほんとに初歩の部分をまとめました。今回はルーティングの部分についてまとめていきます。 ルーティング ブラウザなどから、リクエストされたURLに対して何の処理を割り当てるかというのがルーティングのざっくりとした意味です。イメ…

Pythonで一番小さいWEBフレームワークbottle.py その1

BottleというWEBアプリケーションフレームワークをご存知でしょうか。 DjangoやFlask等さまざまなWEBアプリケーションフレームワークがある中で、Bottleはもっとも軽量なフレームワークです。 1ファイル(bottle.py)で構成されているにもかかわらず、以下のよ…