問題タブ [mod-wsgi]
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.
python - HTTP 経由で高価なブロッキング python プロセスの結果を提供するより良い方法はありますか?
大きな MP3 ファイルの固定在庫の小さな任意のセグメントを提供する Web サービスがあります。MP3 ファイルは、Python アプリケーションによってオンザフライで生成されます。モデルは、必要なセグメントを指定して URL に GET 要求を行い、audio/mpeg
応答でストリームを取得することです。これは高価なプロセスです。
フロントエンドのリクエスト ハンドラとして Nginx を使用しています。Nginx は、一般的なリクエストに対するレスポンスのキャッシュを処理します。
最初に、バックエンドで Tornado を使用して Nginx からのリクエストを処理しようとしました。ご想像のとおり、MP3 操作のブロックにより、Tornado は本来の機能 (非同期 I/O) を実行できませんでした。そのため、マルチスレッド化を行った結果、ブロックの問題が解決され、非常に優れたパフォーマンスを発揮しました。ただし、まだ診断や再現ができていない微妙な競合状態 (実際の負荷の下) が発生しました。競合状態により、MP3 出力が破損します。
そこで、アプリケーションを単純な WSGI ハンドラとして Apache/mod_wsgi の背後に設定することにしました (まだ Nginx を前に置いています)。これにより、ブロッキングの問題と競合状態が解消されますが、実際の条件下ではサーバー上にカスケード負荷 (つまり、Apache が作成するプロセスが多すぎる) が発生します。現在、Apache/mod_wsgi の調整に取り組んでいますが、まだ試行錯誤の段階です。(更新: Tornado に戻しました。以下を参照してください。)
最後に、質問があります。何か足りないものはありますか? HTTP 経由で CPU コストの高いリソースを提供するより良い方法はありますか?
更新: Graham の情報に基づいた記事のおかげで、これは Apache のチューニングの問題であると確信しています。その間、Tornado の使用に戻り、データ破損の問題を解決しようとしています。
すぐに問題に対処した人にとっては、Tornado と少しのマルチスレッド (スレッドによって導入されたデータの整合性の問題にもかかわらず) は、小さな (シングル コア) Amazon EC2 インスタンスで許容できる負荷を処理します。
python - Snow Leopard の mod_wsgi python バージョンの不一致
Mac OS X 10.6 でデフォルト以外の Python インストールを使用して、Apache 2.2.14 で mod_wsgi 3.1 を実行しようとしています。
mod_wsgi ソースをダウンロードした後、次を実行します。
それから
次に、Apacheを再度起動します
/var/log/httpd/error_log を cat すると、次のように表示されます。
[2009 年 12 月 21 日月曜日 12:27:26] [警告] mod_wsgi: Python/2.6.4 用にコンパイルされています。
[2009 年 12 月 21 日月曜日 12:27:26] [警告] mod_wsgi: Python/2.6.1 を使用したランタイム。
[2009 年 12 月 21 日月曜日 12:27:26] [通知] Apache/2.2.14 (Unix) DAV/2 mod_wsgi/3.1 Python/2.6.1 構成 -- 通常の運用を再開
otool -L mod_wsgi.so を実行すると、次のように表示されます。
mod_wsgi.so:
/System/Library/Frameworks/Python.framework/Versions/2.6/Python (互換バージョン 2.6.0、現在のバージョン 2.6.1)
/usr/lib/libSystem.B.dylib (互換バージョン1.0.0、現行バージョン125.0.0)
何を与える?なぜシステム フレームワークとリンクしているのですか。
mod_wsgi の configure および build コマンドからの出力は次のとおりです。
アルキメデス:mod_wsgi-3.1 awolf$ ./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python
apxs2をチェックしています...いいえ
apxs をチェックしています... /opt/apache2/bin/apxs
Apache のバージョンを確認しています... 2.2.14
構成: ./config.status の作成
config.status: Makefile の作成
アルキメデス:mod_wsgi-3.1 awolf$ make
/opt/apache2/bin/apxs -c -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -Wc,'-arch x86_64' mod_wsgi.c -L/usr/local/ Cellar/python/2.6.4/lib -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl /Library/Webserver/build/libtool --サイレント --mode=compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I/opt/apache2/include -I/opt/apache2/include -I/opt/apache2/include - arch x86_64 -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
/usr/local/Cellar/python/2.6.4/include/python2.6/Python.h:125 からインクルードされたファイルで、
/usr/local/Cellar/python/2.6.4/include/python2.6/modsupport.h:27: 警告: 'PyArg_ParseTuple' は認識されない形式の関数型です /Library/Webserver/build/libtool --silent --mode =link gcc -o mod_wsgi.la -rpath /opt/apache2/modules -module -avoid-version mod_wsgi.lo -L/usr/local/Cellar/python/2.6.4/lib -L/usr/local/Cellar/ python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl
Archimedes:mod_wsgi-3.1 awolf$ sudo make install
パスワード:
/opt/apache2/bin/apxs -i -S LIBEXECDIR=/opt/apache2/modules -n 'mod_wsgi' mod_wsgi.la
/Library/Webserver/build/instdso.sh SH_LIBTOOL='/Library/Webserver/build/libtool' mod_wsgi.la /opt/apache2/modules
/Library/Webserver/build/libtool --mode=install cp mod_wsgi.la /opt/apache2/modules/
cp .libs/mod_wsgi.so /opt/apache2/modules/mod_wsgi.so
cp .libs/mod_wsgi.lai /opt/apache2/modules/mod_wsgi.la
cp .libs/mod_wsgi.a /opt/apache2/modules/mod_wsgi.a
chmod 644 /opt/apache2/modules/mod_wsgi.a
ranlib /opt/apache2/modules/mod_wsgi.a
python - Django + mod_wsgiはPythonパスにどのように影響しますか?
/domains/somedomain.com/libs/にあるPythonライブラリを使用した簡単なセットアップがあり、すべてのテストが正常に実行されます。WSGIをDJANGO_SETTINGS_MODULEから"somedomain.settings"で開始します。ここで、somedomainはlibs/のパッケージです。
突然、pywapi.pyをlibs /に追加すると、サイトにアクセスしたときにインポートできなくなりました。しかし、wsgiスクリプトに「importpywapi」を追加すると、Apacheにヒットすると失敗しますが、それを記述しただけでは成功します。WSGI自体が実際にパスにlibs/を追加しているので、実行時にそこにあるはずです。パスも絶対的なものであるため、CWDの変更によってこれが発生することはありません。
私は他に何も考えられず、それ以外の場合は生産的な朝の半分をいじくり回してきました。
python - Python での追跡システムとリアルタイムの統計分析
この質問は、以前の質問であるMySQL 追跡システムに関連しています。要するに、Python を使用して負荷の高い追跡システムを実装する必要があります。データベース部分については、mongoDB に落ち着きました (これは、この仕事に適したツールのように思えます)。開発言語はPythonになります。
nginx の背後にある CherryPy アプリケーションのインスタンスをいくつか使用することを考えていました。これの背後にある理由は、wsgi のすべての部分を自分で処理したくないということですが、一方で、アプリがシンプルになり、ORM が不要になるため、本格的な Web フレームワークは必要ありません。
私の質問は次のとおりです。
CherryPy 組み込みサーバーを使用する必要がありますか、それとも modwsgi (または別のサーバー全体) で Apache を使用する必要がありますか?
これは合理的なアプローチ (nginx、mongoDB) のように聞こえますか? そうでない場合、何をお勧めしますか?
前もって感謝します。
python - 不明な認証プロバイダー: wsgi ... 失敗!
別のサーバーで wsgi 認証を行っていますが、2 番目のサーバーが同じ構成を受け入れておらず、リロード時にエラーが発生し、次のメッセージが表示されます。
構成ファイルの関連部分は次のとおりです (12 行目は WSGIAuthUserScript です ...)
そして auth_test.wsgi ファイル:
mod-wsgi.conf と mod-wsgi.load の両方が有効になっています。もちろん/何か/が違うはずですが、途方に暮れています。
python - djangoのmod_wsgiを含む静的ファイル
たくさん検索しましたが、django Webサイトの静的ファイル(css、image、...)にまだ問題があります。
archlinux64ビットでapacheを使用してmod_wsgiを使用しています
http.confに追加しました:
ホームフォルダでdjango.wsgiを使用しようとしましたが、機能しません( )(ここpermission denied to access /
に示すテストスクリプトを使用すると、奇妙なことに機能します)
すべてのディレクトリとコンテンツ(apacheフォルダー、wsgi-script、martfiles)には775 root:devusers
、ユーザー、http、rootを含むグループdevusersのアクセス許可があります。
テンプレートbase.htmlでは、cssを次のように呼び出します。
および/var/log/http/error.logのエラー
/srv/http/wsgi-script/django.wsgi
/home/.../martfiles/settings.py
ありがとうございました
編集:私のdjango Webサイトが正常に機能していることを正確に示しています(セッションを除くが、関連しているとは思わない)ので、django.wsgiファイルに関連しているのかわかりません(おそらく私は間違っています)が、確かなことは何ですかapacheフォルダーの外からdjango.wsgiを使用できるはずです
Alias /media /home/mart/programmation/python/django/martfiles/media/
で行を変更しAlias /media /srv/http/media/
て適切な権限を与えると、機能します。しかし、私はすべてのメディアをapacheフォルダーに入れたくありません(そしてそうすべきではありません)。
django - パッケージlibapache2-mod-wsgiが見つかりませんでした
私はDjangoでウェブサイトを開発しましたが、今は本番環境に移行する必要があります。これはmod_wsgiとapache2でやりたいです。残念ながら、次のコマンドを実行すると、「パッケージlibapache2-mod-wsgiが見つかりませんでした」というエラーが表示されます。
私はubuntuサーバーkermic(9.10)でapache2を使用しています。
私は自分のsources.listも入力します:
誰かが問題が何であるか知っていますか?
python - CherryPy が応答コードを変更する
mod_wsgi と Apache 上で cherrypy を使用する私の python アプリケーションでは、応答コードが 403 から 500 に変更されます。これを明示的に 403 に設定しています。
つまり、cherrypy.response.status = 403
クライアントが受け取る応答コードが 500 である場所と理由がわかりません。この問題の経験がある人はいますか>
ubuntu - mod_wsgi 3.1 のインストール中にエラーが発生しました
mod_wsgi 3.1 を Ubuntu 9.10 にインストールしようとしていますが、作成しようとするとこのエラーが発生します
何が問題ですか?
django - Django + mod-wsgi+psycopg2の問題
だから私は初めてDjangoをmod-wsgiで実行させようとしています。例に示すようにApacheを構成しましたが、すべてが正しく行われたと確信しています。
PYTHON_EGG_CACHE
変数を設定しなかったため、デフォルトを使用します: /var/www/.python-eggs
。このディレクトリを作成し、ユーザーが書き込み可能にしましたwww-data
。
サイトを開くと、500.html
テンプレートからの出力が表示され、ログに記録されるものは次のとおりです。
これが私が持っているものです/var/www/.python-eggs/
psycopg2eggディレクトリ内の唯一のファイルはです_psycopg.so
。ファイルがなくtz.py
、これが問題だと思います。
ご意見をお聞かせください。
PS、私はビルドアウトを使用しdjangorecipe
てDjangoをデプロイします。ユーザーと一緒にビルドアウトスクリプトを実行しbuildout
ます。しかし、それが理にかなっているかどうかはわかりません。
PPSpsycopg2
は、実行できるので正しくインストールされていますsyncdb
。