2

Webスペースを確認したところ、署名には次のように書かれています。Apache / 2.2.9(Debian)mod_python / 3.3.1 Python / 2.5.2 mod_ssl / 2.2.9 OpenSSL / 0.9.8g

これは、Pythonが何らかの形でサポートされていることを願っています。Pythonが2回リストされているのはなぜですか?mod_python/3.3.1およびPython/2.5.2 ???

私のウェブスペースにcgi-binフォルダーがあります。

やりたいこと:サーバーからテキストデータを取得するには、クロスサイト呼び出しを行う必要があります。テキストデータはJSONではありませんが、JSONに変換する必要があると思います(またはJSONなしでクロスサイトを実行するオプションはありますか?)

Pythonスクリプトは、JSONPのリクエストを取得します。リクエストに応じて(私はどういうわけかURLを解析する必要があると思います)、Pythonスクリプトは、リクエストされたテキストデータファイルをWebサーバーからロードし、JSONでラップして返します。

誰かが私のウェブスペースでPythonを使ってこれらの3つのステップをどのように行うか教えてもらえますか?

4

1 に答える 1

2

まず、署名は python を 2 回リストしていません。最初にApache Web サーバー プラグインであるmod_pythonのバージョンをリストし、次にシステム上の python インタープリターのバージョンをリストします。

python cgi モジュール- これは実際には Python サーバー コードを記述する非効率的なアプローチですが、ここにあります。最終的には、世の中にある多くの素晴らしい Python Web フレームワークの 1 つを検討する必要があります。しかし、cgi モジュールを使用すると、応答は常に次のようになります。

print 'Content-Type: application/json\n\n'

Python スクリプトは、HTTP 要求からサーバー上で実行されます。そのスクリプトでは、リクエストを確認し、URL 値またはクエリ文字列から提供するデータを決定します。

少なくとも、戻り値を基本的な JSON データ構造にラップするだけです。テキスト データ自体は単なる文字列にすることができます。

import json
text_data = "FOO"
json_data = json.dumps({'text': text_data})
print json_data
# {"text": "FOO"}

JSONP の側面については、通常、クエリ文字列をチェックして、クライアントが必要とするコールバック関数の特定の名前がリクエストに含まれているかどうかを確認します。

print "callback(%s);" % json_data
# callback({"text": "FOO"});

クライアントがそれを受信すると、クライアントに対してコールバックが実行されるため、それを返すと JSONP タイプの応答になります。

最後に、python cgi スクリプトは、単一のリクエストごとに (同じクライアントからの繰り返しのリクエストであっても) まったく新しい python インタープリター プロセスを開始する必要があることに注意してください。これにより、負荷が増加すると、サーバーが簡単に圧倒される可能性があります。このため、人々は通常 wsgi ルート ( Apache ではmod_wsgi ) を使用します。wsgi を使用すると、永続的なアプリケーションを実行し続けることができ、進行中のリクエストを処理できます。

于 2012-06-18T20:02:38.967 に答える