3

私の現在のテストpythonスクリプトは次のようなことをします:

#!/usr/bin/env python
import sys
data = sys.stdin.read()
myjson = json.loads(data)

問題は、これが機能した場合でも、おそらく read() でブロックされているように見える場合があることです。

他のいくつかの理由で、CGI スクリプトに tomcat を使用することを余儀なくされていますが、これが問題になるかどうかはわかりません。

4

1 に答える 1

2

読み取る前にコンテンツの長さを確認し、によって読み取られるバイト数を制限する必要がありますsys.stdin.read()。を参照してくださいcgi.parse_header()

アップデート:

着信データは、Web サーバーによって設定された環境を介して取得されます。でアクセスできますos.environ

import os
from cgi import parse_header
os.environ['Content-Type'] = 'text/html; charset=utf-8'
parse_header(os.environ['Content-Type'])
# returns ('text/html', {'charset': 'utf-8'})

したがって、CGI スクリプトでは (大まかに) 以下が必要です。

import os, cgi, sys
cl, _ = parse_header(os.environ['Content-Length'])
data = sys.stdin.read(int(cl))
于 2013-02-20T10:49:56.350 に答える