しばらく App Engine を使用していなかったので、App Engine を再開しようとしています。64 ビットの Linux Go ランタイム、バージョン 1.8.1 を使用しています。
ドキュメントの手順を正しく実行していると思います。また、過去に正しく機能していたことを実行していると思いますが、起動しようとすると次のエラーが発生しますdev_appserver.py
。
$ dev_appserver.py . INFO 2013-07-11 07:24:45,919 sdk_update_checker.py:244] SDK の更新を確認しています。 INFO 2013-07-11 07:24:46,230 sdk_update_checker.py:288] この SDK リリースは、宣伝されているリリースよりも新しいものです。 警告 2013-07-11 07:24:46,443 simple_search_stub.py:955] /tmp/appengine.batterybotinfo.darshan/search_indexes から検索インデックスを読み取れませんでした トレースバック (最新の呼び出しが最後): ファイル「/home/darshan/bin/dev_appserver.py」の 182 行目 _run_file(__file__, グローバル()) ファイル「/home/darshan/bin/dev_appserver.py」、178 行目、_run_file 内 execfile(script_path, globals_) ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py」の 695 行目 主要() メインのファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py」の 688 行目 dev_server.start(オプション) ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/devappserver2.py」の 659 行目、先頭 apis.start() ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/api_server.py」の 137 行目、先頭 super(APIServer, self).start() ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py」の 295 行目、先頭 self._start_all_dynamic_port(host_ports) の場合: ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py」、348 行目、_start_all_dynamic_port 内 サーバー.start() ファイル「/home/darshan/software/google_appengine/google/appengine/tools/devappserver2/wsgi_server.py」の 194 行目、先頭 socket.SOCK_STREAM, 0, socket.AI_PASSIVE) TypeError: getaddrinfo() 引数 1 は文字列または None でなければなりません
私が最初に考えたのは、間違ったバージョンの Python を使用している可能性があるということでした。案の定、私は 2.7.5 を使用しており、ドキュメントには 2.5 が必要であると明確に記載されています。ただし、2.5 をインストールしてシステムで使用するように設定した後、次のエラーが発生したため、ドキュメントは古くなっているようです。
エラー: Python 2.5 はサポートされていません。バージョン 2.7 を使用してください。
さて、2.7.5 と最初のエラーに戻ります。
これが Python コードのバグなのかdev_appserver.py
(1 か月前に公開されているので、そうではないと推測しています)、Python のインストールの問題なのか、それとも私のシステムがグーグルの期待。
必要な場合を除き、コードをいじりたくはありませんdev_appserver.py
が、問題の原因を突き止めるために喜んでコードを調べます。エラーは 194 行目にあります。ここに190-195行目があります:
# AF_INET or AF_INET6 socket
# Get the correct address family for our host (allows IPv6 addresses)
host, port = self.bind_addr
try:
info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
包含メソッドが 2 回呼び出されていることがわかりました。初回はhost
いつもです。2 回目はクラッシュします。は常に(文字列ではなく int)、一見ランダムな 5 桁の int です。"127.0.0.1"
port
0
host
10
port
と を または のいずれかにハードコーディングしようとしましhost
たが"127.0.0.1"
、別のエラーが発生します。頭がいっぱいで、よくわからないことを変更しても、本当の問題を解決できないのではないかと思います。エラーメッセージをグーグルで検索しても役に立ちませんでした。port
8080
0