原理原則をしっかりしておきましょう。
世界中からの要求を受け付けるWebサーバの仕掛けはどうなってるのか?
電話は対人ですね。Webサービスも見かけはそう思えます。
電話と違うのはURLは一つってところです。
電話だと1人で何人もと同時に対話してるように見える。聖徳太子か?
その仕掛けを簡潔に纏めたサイトがありました。探すの苦労しましたね。
自分で書くよりは楽。コピペ最高。AIがやってるレベルのことなら私にも出来ます。
電話が掛かってきたら受話器を取って担当者に回す。
素早い受付担当が居るんですね。電話交換機にもにてますね。
この仕掛けを裏で支えてるのがプロセス生成。
親の財産と仕事を子供に迅速に引き継ぐしかけ。オブジェクト指向の元祖です。
応答性を高めるためにはスレッドを使う。これぞプロの技。ビジネスなら。
プロセスはOSが面倒見るけどスレッドはアプリが面倒見る。
スレッドは素人では扱いにくい。アプリ開発で必須では無いしね。
モジュールをスレッドで動かすのは簡単です。
でもアプリの設計でマルチスレッドはほとんど考慮されない。
今日のまとめ。
ここまでくどくど言ってきたのはWebは不特定多数の要求をさばく。
ではでは、Pythonで書かれたWebサーバそこんとこどうなってるの?
まず言える事は、python出書かれたのはWebインターフェイスを持つアプリケーションサーバの位置づけ。一度に大量のトラフィックを捌くようには作られてない。
実験として一度に沢山の接続要求を投げてみた。問題なく応答は返ってきました。
サーバー側のログを見てるときれいなもんです。
プロセスの状況から仕掛けが分かります。
どうやらfastapi一つにpythonが2つ動いてるようです。
一つはリクエストを受け付けて待ち行列を作る。
もう一つがリクエストを処理するプロセス。こっちにアプリが入ってる。
この構造だと並列処理が出来ないのでWebサーバの処理性能は最低でしょうね。
でもpythonとの組み合わせでは現実的な解答でしょう。
個人レベルの環境でいろいろ楽しめるのはありがたい。
仕事にするには嫌だけど遊びなら面白い。
開発関係者に感謝です。