Python2ではなくPython3でJSONデータを誤って処理するボトル

アビンガム

主にJSONデータをシャッフルするボトルベースのHTTPサーバーがあります。これをPython2.7で実行すると、完全に機能し、ルートハンドラーでは、を介してJSONデータにアクセスできますbottle.request.jsonただし、Python3.4で実行するとbottle.request.jsonNoneです。

HTTPトラフィックを調べましたが、どちらの場合もまったく同じです(Pythonに依存しないクライアントの制御下にあるため、予想どおりです)。

また、どちらの場合もJSONデータボトルに到達していることがわかります印刷するとbottle.request.params.keys()、どちらの場合も、文字列化されたJSONがリスト内の唯一のエントリとして表示されます。そして、文字列はどちらの場合も同じです。ただし、何らかの理由で、Python 2バージョンはJSONデータを認識していますが、Python3バージョンは認識していません。

不思議なことに、これは以前は機能していましたが、最近のコードまたはボトル(あるいはその両方)の変更により、問題が発生しました。ただし、コードを見ると、問題を作成するために何をしたのかわかりません。

誰かが何が起こっているのか知っていますか?これは、クライアント側、ボトル構成側で私が間違っていることですか、それともボトルの欠陥ですか?私はグーグルとボトル問題追跡システムの両方でこの問題を検索しましたが、役に立ちませんでした。

アビンガム

これはボトルとは何の関係もないことがわかりました。この問題の最終的な原因は、emacs lisp HTTPライブラリの欠陥が原因で、クライアント要求に2つのContent-Typeヘッダーがあることです。恥ずかしいことに、私はこの欠陥についてかなり前から知っていましたが、適切に回避できたと思いました。

Python 2とPython 3の違いが見られる理由は、100%わかりませんが、今のところ、バージョン間のWSGI機構の無害な変更に関係していると思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Syntasticをpython2ではなくpython3チェッカーとして設定する方法

分類Dev

Makefileが間違ったPythonインストールを検出しました(Python3ではなくPython2)

分類Dev

Python2とPython3を並べてインストールしたPyCharmでnosetestsを使用する

分類Dev

リストが空になるまで一度に1つずつ削除して、すべての組み合わせを見つけます。Python3でリストを処理するのに最適なデータ構造は何ですか。

分類Dev

iPythonにPython3ではなくPython2を使用させる方法

分類Dev

ラムダをpython2からpython3に移行し、python3で削除されたタプルパラメーターのアンパックを処理する方法

分類Dev

pyaudioはpython2とpython3で異なるトーンを再生します

分類Dev

Pythonでjsonデータを反復処理する方法は?

分類Dev

Pythonでjsonデータを処理する方法は?

分類Dev

python3ではなくpython2を使用するようにjupyterに指示する方法

分類Dev

関数lambdaを使用して以下を変更し、python2コードをpython3にフィルター処理します

分類Dev

Python2からPython3へのコンバーターが「items()」を「リスト」に入れるのはなぜですか?

分類Dev

iPythonはPython2ではなくPython3で実行されます

分類Dev

Python2とPython3の両方で機能するコードを書く方法は?

分類Dev

python2とpython3のインクルードパスが異なるのはなぜですか?

分類Dev

forループを使用してpython3でさまざまな前処理関数を使用するにはどうすればよいですか?

分類Dev

python3でディルロードpython2ピクルスを作成する方法

分類Dev

デフォルトのPython3.6ではなくPython2用のパンダをインストールする方法は?

分類Dev

Python3でPython2 str.lower()をシミュレートする方法

分類Dev

whileループではなくforループを使用してPython Queue.Queueを反復処理する方法は?

分類Dev

コードはPython2ではなくPython3で実行されます

分類Dev

Python2でファイル名を処理できない

分類Dev

Python3。コンテキストマネージャー内で例外を正しく発生させて、オペレーターで例外を処理するにはどうすればよいですか?

分類Dev

新しいpythonプラグインを使用するときに、コードをpython3ではなくpython2として実行するようにsnapcraftに指示するにはどうすればよいですか?

分類Dev

Flask / Python3を使用してURLで欠落しているパラメーターを処理する方法

分類Dev

「python」コマンドをpython3ではなくpython2を指すように設定するにはどうすればよいですか?

分類Dev

このタプルをラムダで解凍してPython2からPython3に移植する最もPython的な方法

分類Dev

Python2がテキストファイルを読み取らないのにPython3がUnicodeDecodeErrorを取得するのはなぜですか?

分類Dev

奇妙な方法で非ASCII文字を処理するPython3

Related 関連記事

  1. 1

    Syntasticをpython2ではなくpython3チェッカーとして設定する方法

  2. 2

    Makefileが間違ったPythonインストールを検出しました(Python3ではなくPython2)

  3. 3

    Python2とPython3を並べてインストールしたPyCharmでnosetestsを使用する

  4. 4

    リストが空になるまで一度に1つずつ削除して、すべての組み合わせを見つけます。Python3でリストを処理するのに最適なデータ構造は何ですか。

  5. 5

    iPythonにPython3ではなくPython2を使用させる方法

  6. 6

    ラムダをpython2からpython3に移行し、python3で削除されたタプルパラメーターのアンパックを処理する方法

  7. 7

    pyaudioはpython2とpython3で異なるトーンを再生します

  8. 8

    Pythonでjsonデータを反復処理する方法は?

  9. 9

    Pythonでjsonデータを処理する方法は?

  10. 10

    python3ではなくpython2を使用するようにjupyterに指示する方法

  11. 11

    関数lambdaを使用して以下を変更し、python2コードをpython3にフィルター処理します

  12. 12

    Python2からPython3へのコンバーターが「items()」を「リスト」に入れるのはなぜですか?

  13. 13

    iPythonはPython2ではなくPython3で実行されます

  14. 14

    Python2とPython3の両方で機能するコードを書く方法は?

  15. 15

    python2とpython3のインクルードパスが異なるのはなぜですか?

  16. 16

    forループを使用してpython3でさまざまな前処理関数を使用するにはどうすればよいですか?

  17. 17

    python3でディルロードpython2ピクルスを作成する方法

  18. 18

    デフォルトのPython3.6ではなくPython2用のパンダをインストールする方法は?

  19. 19

    Python3でPython2 str.lower()をシミュレートする方法

  20. 20

    whileループではなくforループを使用してPython Queue.Queueを反復処理する方法は?

  21. 21

    コードはPython2ではなくPython3で実行されます

  22. 22

    Python2でファイル名を処理できない

  23. 23

    Python3。コンテキストマネージャー内で例外を正しく発生させて、オペレーターで例外を処理するにはどうすればよいですか?

  24. 24

    新しいpythonプラグインを使用するときに、コードをpython3ではなくpython2として実行するようにsnapcraftに指示するにはどうすればよいですか?

  25. 25

    Flask / Python3を使用してURLで欠落しているパラメーターを処理する方法

  26. 26

    「python」コマンドをpython3ではなくpython2を指すように設定するにはどうすればよいですか?

  27. 27

    このタプルをラムダで解凍してPython2からPython3に移植する最もPython的な方法

  28. 28

    Python2がテキストファイルを読み取らないのにPython3がUnicodeDecodeErrorを取得するのはなぜですか?

  29. 29

    奇妙な方法で非ASCII文字を処理するPython3

ホットタグ

アーカイブ