原理原則をしっかりしておきましょう。

世界中からの要求を受け付けるWebサーバの仕掛けはどうなってるのか?

電話は対人ですね。Webサービスも見かけはそう思えます。

電話と違うのはURLは一つってところです。

電話だと1人で何人もと同時に対話してるように見える。聖徳太子か?

 

その仕掛けを簡潔に纏めたサイトがありました。探すの苦労しましたね。

自分で書くよりは楽。コピペ最高。AIがやってるレベルのことなら私にも出来ます。

 

Webサーバの構造。

電話が掛かってきたら受話器を取って担当者に回す。

素早い受付担当が居るんですね。電話交換機にもにてますね。

 

この仕掛けを裏で支えてるのがプロセス生成。

親の財産と仕事を子供に迅速に引き継ぐしかけ。オブジェクト指向の元祖です。

 

応答性を高めるためにはスレッドを使う。これぞプロの技。ビジネスなら。

 

プロセスはOSが面倒見るけどスレッドはアプリが面倒見る。

スレッドは素人では扱いにくい。アプリ開発で必須では無いしね。

モジュールをスレッドで動かすのは簡単です。

でもアプリの設計でマルチスレッドはほとんど考慮されない。

今日のまとめ。

ここまでくどくど言ってきたのはWebは不特定多数の要求をさばく。

ではでは、Pythonで書かれたWebサーバそこんとこどうなってるの?

 

まず言える事は、python出書かれたのはWebインターフェイスを持つアプリケーションサーバの位置づけ。一度に大量のトラフィックを捌くようには作られてない。

 

実験として一度に沢山の接続要求を投げてみた。問題なく応答は返ってきました。

サーバー側のログを見てるときれいなもんです。

プロセスの状況から仕掛けが分かります。

どうやらfastapi一つにpythonが2つ動いてるようです。

一つはリクエストを受け付けて待ち行列を作る。

もう一つがリクエストを処理するプロセス。こっちにアプリが入ってる。

この構造だと並列処理が出来ないのでWebサーバの処理性能は最低でしょうね。

でもpythonとの組み合わせでは現実的な解答でしょう。

 

個人レベルの環境でいろいろ楽しめるのはありがたい。

仕事にするには嫌だけど遊びなら面白い。

 

開発関係者に感謝です。