独自のリバースプロキシを作成しているときに、このPythonのバグに対処しています。サーバーはプロキシに次のSet-Cookie
応答ヘッダーを送信しています。
workgroup_session_id=ilDJtR0rE1AG28C9ZxKLHj8TBtcT89sw; Path=/; Expires=Sun, 02-Dec-2012 5:57:25 GMT; HttpOnly
SimpleCookie
この文字列をモジュールからインスタンスにロードしていCookie
ます。残念ながら、上記で参照したバグのため、後でexpires
morsel辞書から引き出すと、が返されますSun,
。Expires
ヘッダーのコンポーネントを引用Set-Cookie
符で囲む(または値にスペースを含むキーと値のペアを引用符で囲む)ことで、このバグを克服できることがわかりました。
したがって、この:
workgroup_session_id=ilDJtR0rE1AG28C9ZxKLHj8TBtcT89sw; Path=/; Expires=Sun, 02-Dec-2012 5:57:25 GMT; HttpOnly
になります:
workgroup_session_id=ilDJtR0rE1AG28C9ZxKLHj8TBtcT89sw; Path=/; Expires="Sun, 02-Dec-2012 5:57:25 GMT"; HttpOnly
この:
test=a b c; Path=/; Expires=a b c; HttpOnly
になります:
test="a b c"; Path=/; Expires="a b c"; HttpOnly
文字列をトークンに分割し、それらをループしてスペースを探してから文字列を再構築できることは知っていますが、最高のパフォーマンスのソリューションが何であるかを知りたいです。前述したように、これは1秒間に数百のリクエストを処理できる可能性のあるリバースプロキシであるため、この置換を可能な限り高速化する必要があります。
正規表現の置換(もちろんプリコンパイル済み)は効率的でしょうか?正規表現はかなり重いと聞きましたが……。