前提
bottle
でlocalhost
を立てて処理をおこなっています。
ブラウザからアクセスした場合には、全く問題無く動作しています。
ただ、別プロセスからlocalhostを操作するニーズがあり、localhostに対してrequest
を投げて操作したいと思っています。
そこで以下のようなコードを試しました。
python
1@route('/test',method=["GET"]) 2def test_response(): 3 return "alive" 4bottle.run(host='localhost', port=8001) 5# bottle.run(host='0.0.0.0', port=8001)も試したが同じ
python
1import requests 2url = "http://localhost:8001/test" 3rslt = requests.get(url) 4print(rslt)
現象
サーバーからいつまでたってもレスポンスがかえってきません。
ばらつきがあるのですが、以下のことが確認できました。
-
普通にリクエストを投げると、数分待ってもレスポンスがない。
-
↑のレスポンス待ちの状態で、ブラウザからlocalhostに対して何らかの操作をおこなうと、すぐさまレスポンスがある(別プロセスへのレスポンスがすぐにおこなわれ、ブラウザでおこなったリクエストにも続けざまにレスポンスがある。)
-
↑の方法などで一旦レスポンスを得ると、別プロセスからのリクエストも、レスポンスがなされるようになる。
-
「サーバーは、リクエストが複数来たときに反応する」という仮説に基づいて、複数のスレッドから5リクエストほど続けて投げてみたが、反応なし(ブラウザからリクエストしないと駄目)
-
postmanからも同様のリクエストを送ってみたが、同様の結果。
ブラウザからは全く問題なく動いており、どこに問題があるのか分かりません。
どのように対処したらよいのでしょうか。
なお、bottle.run(host='0.0.0.0', port=8001)
としてみても結果は同じでした。
回答1件
あなたの回答
tips
プレビュー