はじめに
私は一つのアイデアを思いつきました。 つまり、コンピューター上のアプリケーションとしてWebアプリケーションを使用します。 私はPython / Djangoで作業しているため、それらだけを使用してアプリケーションを作成するのが自然です。
これには何が必要ですか? 最小限の不要な作業でWebアプリケーションを実行する必要があります。 すべてがそこにあるようです、Djangoはデータベースサーバーなしで(SQLiteを使用して)動作できます、組み込みのdevserverがあります、すなわち Webサーバーをインストールおよび構成せずにWebアプリケーションを実行できます。
しかし、SQLiteで問題がなければ、組み込みのdevserverでの作業はそれほど便利ではないことがわかりました。 手動で実行する必要がありますが、これに同意するように、余分な身体の動きがあります。 ただし、リンクをクリックすると、すべてが自動的に動作し始めます。
もちろん、起動スクリプトを使用して、システムの起動時にdevserverを実行できます。 しかし、それはなんとなくく、リソースを消費し、コンピューターの起動を遅くします。 そして、そのようなアプリケーションがたくさんある場合は?
それで、あなたは何が欲しいですか? Webアプリケーションがそのアドレスにアクセスしたときに動作を開始し、呼び出しがない場合は、ハードドライブ上に静かに横たわります。
提案されたソリューション
その後、xinetdを思い出しました。 このサーバーは、私のタスクと非常によく似た処理を行っています。
- ローカルホスト上の構成済みポートをリッスンします。
- 事前設定されたポートを介してアクセスすると、目的のアプリケーションが起動し、受信したリクエストをアプリケーションの標準入力に転送します。
- 起動されたアプリケーションは標準出力に応答を渡し、xinetdはクライアントに応答を返します。
すべてが正常で、標準の入出力のみがあり、DjangoはWSGIプロトコルを使用してWebサーバーと通信します。
スクリプト
したがって、一方ではstdin / stdoutを介してxinetdと通信し、他方ではWSGIを介してDjangoアプリケーションと通信するスクリプトを作成する必要があります。
スクリプトが作成され、最初のバージョンがGitHubに投稿されています。 たぶん彼は誰かに興味があるだろう、歓迎。
GitHubでスクリプトをダウンロードできます: django-xinetd
インストールと構成については、READMEで説明しています。
おわりに
もちろん、このようなソリューションのパフォーマンスはWebサーバーを使用するよりも低くなりますが、私は非常に満足しています。
これは最初のバージョンであり、もちろん非常に粗雑です。 しかし、最も単純な場合には、それを使用できます。
Linux(Ubuntu)がプラットフォームとして使用されていることを忘れていました。 xinetdは次のコマンドでインストールされます。
apt-get install xinetd
このスクリプトはDjango v1.4で作成およびテストされていますが、これは以前のバージョンでは静的ファイルの動作が異なるため重要です。 以前のバージョンでは、静的ファイルは提供されません。