Django:xinetdで起動

だから、Djangoを起動する別の方法。 しかし、なぜですか? 結局のところ、すでに起動方法はありません。 それはすべての味に見えるでしょう。 正当化と説明-カットの下。



はじめに



私は一つのアイデアを思いつきました。 つまり、コンピューター上のアプリケーションとしてWebアプリケーションを使用します。 私はPython / Djangoで作業しているため、それらだけを使用してアプリケーションを作成するのが自然です。

これには何が必要ですか? 最小限の不要な作業でWebアプリケーションを実行する必要があります。 すべてがそこにあるようです、Djangoはデータベースサーバーなしで(SQLiteを使用して)動作できます、組み込みのdevserverがあります、すなわち Webサーバーをインストールおよび構成せずにWebアプリケーションを実行できます。

しかし、SQLiteで問題がなければ、組み込みのdevserverでの作業はそれほど便利ではないことがわかりました。 手動で実行する必要がありますが、これに同意するように、余分な身体の動きがあります。 ただし、リンクをクリックすると、すべてが自動的に動作し始めます。

もちろん、起動スクリプトを使用して、システムの起動時にdevserverを実行できます。 しかし、それはなんとなくく、リソースを消費し、コンピューターの起動を遅くします。 そして、そのようなアプリケーションがたくさんある場合は?

それで、あなたは何が欲しいですか? Webアプリケーションがそのアドレスにアクセスしたときに動作を開始し、呼び出しがない場合は、ハードドライブ上に静かに横たわります。

提案されたソリューション



その後、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で作成およびテストされていますが、これは以前のバージョンでは静的ファイルの動作が異なるため重要です。 以前のバージョンでは、静的ファイルは提供されません。

Source: https://habr.com/ru/post/J153165/


All Articles