問題タブ [flup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Django の複数のインストール - Web サーバー (Lighttpd) を介して透過的なマルチプレックスを構成する方法は?
この質問は、答えから次へと流れます: 1 つのサーバー上で Django 用に別々のデータベースを持つ複数のアカウントをどのように設定しますか?
このようなものは Google や他の場所で見たことがありません (おそらく私の語彙が間違っているのでしょう) ので、入力はインターネットの言説への価値ある追加になると思います。
次のようにサーバーを構成する方法は次のとおりです。
- Lighttpd の 1 つのインストール
- FastCGI として実行される複数の Django プロジェクト
- Django プロジェクトは自由に追加/削除でき、Web サーバーを再起動する必要はありません。
- 現在のユーザーに応じて、特定の Django インストールへのすべての要求/応答の透過的なリダイレクト
つまり、Django プロジェクトが与えられた場合 (対応する FastCGI ソケットを使用):
- ボブ (/tmp/bob.fcgi)
- スー (/tmp/sue.fcgi)
- ジョー (/tmp/joe.fcgi)
Django プロジェクトは、次のような (単純化しすぎた) スクリプトで開始されます。
ログインしているユーザーに応じて、http://www.example.com/へのトラフィックを正しい Django アプリケーションに送信する必要があります。
つまり、http://www.example.comは、bob がログインしている場合は /tmp/bob.fcgi、joe がログインしている場合は /tmp/joe.fcgi、sue の場合は /tmp/sue.fcgi となります。誰もログインしていない場合は、ログイン ページにリダイレクトする必要があります。
次のアルゴリズムを使用して、逆多重化「プレクサー」FastCGI スクリプトを検討しました。
Cookie $PLEX が設定されている場合、要求を /tmp/$PLEX.fcgi にパイプします。
それ以外の場合は、ログイン ページにリダイレクトします (ユーザー名 => PLEX の多対 1 マッピングに基づいて Cookie PLEX を設定します)。
もちろん、セキュリティの問題として、$PLEX は汚染チェックされるべきであり、$PLEX は信頼の推定を生じさせるべきではありません。
Lighttpd の構成は次のようになります (ただし、Apache、Nginx なども同様に簡単に使用できます)。
意見や感想、役に立つリンク、FastCGI plexer を適切に実装する方法を知っていることなど、すべて歓迎します。
ありがとうございました。
django - Flup で未処理の例外
Flup によって発生した恐ろしい「ハンドルされていない例外」に直面しています。悲しい部分は、アプリケーション レベル (Django) ではなく、Web サーバー (lighttpd+flup) レベルで発生したことです。そのため、問題がどこにあるかについて 500 通の電子メールが送信されることはありません。
私たちのチーム全体は、あいまいなインポートやそのような人がいる場合に備えて、あいまいなインポートによるエラーが発生する可能性を排除するために、コードベースをクリーンアップするのに苦労しました. そして、コード内の多くのことをクリーンアップしました。それでも同じ例外です。
率直に言って、私は Flup のエラー処理に本当にイライラしています。それはあなたに何も教えてくれません。最悪の場合、同じ「未処理の例外」がユーザーに表示されます。どうすればこれをパスできますか?
lighttpd ログを確認しました。「インターフェイス エラー/接続が既に閉じられています」と表示されるだけです。アプリケーションが FCGI モードで実行されている場合にのみ発生します。したがって、問題は flup が実際に私のコード (アプリケーション) をどのように扱っているかということです。どうすればこれをパスできますか?
flup の代替案を調べたのですが、Django は明示的に flup に依存しています (これはもう 1 つの制限であり、私を困惑させました) (参照:django_src/django/core/servers/fastcgi.py 行:100 / 131)
このシナリオを (少なくとも) デバッグして問題を解決するにはどうすればよいですか? 私を助けてください。アプリケーションは 3 日間ダウンしています。
python - Python Flup fastcgiサーバーでシングルトンクラスを作成するには?
Django の fastcgi サーバーとして flup を使用しています。
シングルトンの使い方を教えてください。Flup のスレッド モデルをよく理解しているかどうかはわかりません。
python - PythonWebの「配管」に関する継続的に更新される最高のリソース
私はPythonのプログラマーで、Webアプリケーションに取り組んでいます。私はアプリケーションレベルについてかなり知っています。しかし、私が自分で構成またはデバッグしなければならない根本的な「配管」についてはそれほど多くはありません。
memcachedの使用から、flup、fcgi、WSGIなどまですべてを考えています。
これらに関する情報をオンラインで探す場合、Googleは通常、古いドキュメント(2007年以前のチュートリアルなど)、解決されているかどうかわからない問題の断片などを提供します。
最新の高性能サーバーを組み立てる方法について学ぶための、包括的で最新の優れたリソースはありますか?アーキテクチャの原則と実際のパッケージの両方を説明するものはありますか?
python - FastCgi がクラッシュする -- すべての例外をキャッチしたいが、どうすれば?
fastcgi を使用して apache で実行されている django アプリがあります (Flup の WSGIServer を使用します)。
これは、dispatch.fcgi を介してセットアップされ、以下に連結されます。
runfastcgi は作業を行うものであり、最終的に WSGIHandler で WSGIServer を実行します。
fastcgi をクラッシュさせる例外が発生することがあります。
編集: どのエラーが fastcgi をクラッシュさせるか、または fastcgi がクラッシュするかどうかはわかりません。Apacheを再起動するまで、サイトがダウンすることがあることを知っています-一貫してダウン--。error.log に表示される唯一のエラーは、以下に示す壊れたパイプと不完全なヘッダーのものです。
不完全なヘッダー:
注: 機密情報や雑然としたものは "..." に置き換えました
壊れたパイプ:
注: これはたまたま django アプリではなく trac サイト用ですが、見た目は同じです。
/var/log/apache2/error.log を調べましたが、クラッシュの原因がわかりません。メモリのスワップの問題が時々発生しますが、これは違うと思います。(私の無知を許してください。私は、サーバー管理をより適切に実装およびデバッグする方法を学びたいと思っています。)
runfastcgi を try/except でラップしたいと思います。ランダムな例外を処理する最良の方法は何ですか (実際の原因を突き止めるまで)?
WSGIServer は多くのリクエストを処理すると思います。例外をキャッチした場合、無限ループを恐れずに runfastcgi を再呼び出しできますか? 問題のある例外呼び出し要求に対してエラー HttpRequest を返す必要がありますか? 私はそれを行う方法さえわかりません。
私はdjango/core/servers/fastcgi.pyとdjango/core/handlers/wsgi.pyとdjango/http/init.pyを見てきました
flup の側面について理解を深めることができませんでした。
学べそうなアイデアや経験はありますか?
ありがとう!
python - 無負荷状態でのflup/fastcgicpuの使用
私はDjangoをflupを介してスレッド化されたfastcgiとして実行し、lighttpdによって提供され、ソケットを介して通信します。
無負荷時の各fastcgiスレッドの予想CPU使用率はどれくらいですか?起動時に、各スレッドはしばらくの間3〜4%のCPU使用率で実行され、その後2、3時間で約0.5%に戻ります。このレベルを下回ることはありません。
これだけのCPU使用率は正常ですか?コードにバグがあり、アイドルループで必要以上の処理が必要になっていますか?プロセスが完全にアイドル状態のとき、測定可能なCPUを使用しないことを期待していました。
私はDjangoでばかばかしいほど複雑なことは何もしていません。間違いなく、拡張処理を必要とするものは何もありません。これはそれほど負荷がかからないことはわかっていますが、私が導入したバグである場合は、修正したいと思います。
python - 共有サーバーでの http リクエストの PYTHONPATH の定義
Bluehost に Django をインストールしていますが、Django をインストールする手順の 1 つは、サーバーに flup をインストールすることでした。私はそうしましたが、SSH経由でログインすると、すべてがうまく機能します。しかし、実際にブラウザでページにアクセスすると、flup が見つかりません。サーバーログに次のエラーが表示されます。
エラー: flup という名前のモジュールがありません。flup パッケージを読み込めません。django を FastCGI アプリケーションとして実行するには、http://www.saddi.com/software/flup/ から flup を入手する必要があります。既に flup をインストールしている場合は、PYTHONPATH にそれがあることを確認してください。
私が SSH にいるときに flup を認識するので、PYTHONPATH が http 要求の適切な場所を指すように変更する必要がある他の bash ファイルがあると推測されます。しかし、これは共有サーバーであるため、ホーム ディレクトリ以外には多くの権限がありません。
何か案は?
python - flup fcgi スクリプトを機能させるのが難しい
Django を使用してクライアント用のサイトを構築しています。共有ホスティングでホストされており、mod_wsgi は使用できません。昔はfcgiで動いていたのですが、戻ってきたら壊れていました。
fcgi スクリプトを単純な hello world スクリプトに置き換えました。
ローカル サーバーでテストして動作していますが、ホストされているサーバーでは次のエラーが発生します。
エラーログを見ると、次のように表示されます。
サーバーに SSH で接続すると、スクリプトを正常に実行でき、次の出力が得られます。
これを修正するにはどうすればよいですか?
追加情報:
スクリプトがまったく実行されていないようです。スクリプトの先頭に import x を追加して ssh から実行すると、x.pyc が作成されることがわかります。x.pyc を rm してサイトにアクセスすると、x.pyc が作成されません。
また、エラーがから変更されたことにも気付きました
に
これらの終了ステータスのリファレンスを見つけることができれば幸いです。
django - Lighttpd + fastcgi + django:予期しないEOFが原因でクライアントに送信された切り捨てられた応答
DjangoベースのWebアプリを動作するデプロイメント構成にしようとしていますが、lighttpd / fastcgiで動作させるために多くの時間を費やした後、この問題を乗り越えることができません。クライアントが初めてログインするとき、サーバーから大きなデータダンプを受け取ります。これは、JSONとして返送されるいくつかの〜1MBサイズのチャンクに分割されます。
時々、クライアントはチャンクの1つに対して切り捨てられた応答を受け取ります。このメッセージは、lighttpdログに表示されます。
私は本当にこれが起こる理由を理解しようとして髪を引っ張っています(これはDjangoを./manage.py runserver
モードで実行しているときは起こりません)。以下は、私が試したが効果がなかったことです。
チャンクサイズを1MBから256Kに削減します。切り捨ては通常600K〜900Kのマーク付近で発生しますが、256Kのチャンクサイズでは切り捨てられます。
たくさんの予備のスレッドがぶら下がるように、Djangoのとの値を非常に高く設定し
minspare
ます。maxchildren
runfgci
maxchildren
スレッドが1つだけになるように1に設定します。lighttpdとDjango間のfastcgi接続のためにUNIXソケットモードとTCP/IPモードを切り替えます。
私はこのようなものをたくさんグーグルで検索しましたが、Djangoの修正と思われるものは見つかりませんでした(PHP設定の調整に関するヘルプがあったようです)。
私の設定は次のとおりです。
OSX 10.6.4
Python 2.6.1(システム)
Macportsからインストールされたlighttpd(1.4.26_1 + ssl)
flupWebサイトの最新のPythoneggからインストールされたflup(1.0.2安定版と最新の1.0.3開発版の両方を試しました)
DjangoWebサイトのtarballからインストールされたDjango1.2.1
私のlighttpd設定のFastCGIブロックは次のとおりです。
runfcgi
Djangoを起動するために使用しているコマンドは現在次のとおりです。
誰かがこれが起こらないようにする方法について何か洞察を持っているなら、助けていただければ幸いです。これを比較的迅速に解決できない場合は、lighttpd + fastcgiを放棄し、Apache+mod_wsgiまたはおそらくnginx+fastcgiを確認する必要があります。別のウェブサーバー構成に入る可能性は、私が楽しみにしていることではありません...
助けてくれてありがとう。
編集:追加情報
軽いフォーラムでこのページを見つけました。これは、Djangoのせいである可能性があることを示しています...その場合、PHPがクラッシュしていました。Django側のものを確認したところ、切り捨てられた後でも、切り捨てられた応答を送信したPythonスレッドはその後も実行され、後続のリクエストを処理するため、例外が発生したスレッドによってストリームが中断されていないようです。とクラッシュします。
ここで問題が発生したのはDjangoのfcgiimplまたはLighttpdであるかどうかを確認したかったので(nginx + fastcgiに移行することで実際に何かが解決されるかどうかが判断されるため)、Wiresharkのパケットトレースを調べました。 。切り捨ての直前に発生することの簡略化されたログは次のとおりです。
良好なパケットが最初にDjangoから送信され(8184バイトの場合は30082、さらに8184バイトの場合は30086)、その後、何らかの理由でエントリ30088にLighttpdがTCPFIN
をDjangoに送信します。これが、おそらく接続を終了させる原因です。切り捨てを取得する方法。
一見すると、これはLighttpdのせいのようです。これは、想定される前にシャットダウンしているように見えるためです...いくつかの悪いデータを受け取ったため、これを行っていないかどうかはわかりませんがシャットダウンして反応するDjangoから。