-1

我试图让我的简单口袋妖怪 API 在我的本地主机以外的其他东西上可用。API 有两个文件,client.py 和 server.py。我运行21 market join命令并获得了一个虚拟 IP。(10.244.121.0)。

我尝试修改我的脚本,以便 client.py 请求“ http://localhost:5000/ ”而不是请求“ http://10.244.121.0:5000/ ”,但是当我运行 client.py 我得到请求该网址时出错。我对 Python 还是很陌生,所以我不知道我需要做什么才能让任何在10.244.121.0地址上请求它的人都可以使用这个 API。

客户端.py:

...
# server address
server_url = 'http://10.244.121.0/'


def name():
    id = input("Please enter a Pokemon ID: ")
    sel_url = server_url + 'name?id={0}'
    answer = requests.get(url=sel_url.format(id))
    print(answer.text)

if __name__ == '__main__':
    name()

服务器.py:

  ...
  @app.route('/name')
    @payment.required(1)
    def answer_question():

        # extract answer from client request
        id = request.args.get('id')
        url = 'http://pokeapi.co/api/v2/pokemon/' + id

        response = requests.get(url)
        pokemonData = json.loads(response.text)
        pokemonName = pokemonData['name']
        print(pokemonName)
        return pokemonName

    if __name__ == '__main__':
        app.run(host='0.0.0.0')

这是我将app.run函数中的主机从0.0.0.0虚拟IP替换为虚拟IP时遇到的错误:

   requests.exceptions.ConnectionError: HTTPConnectionPool(host='10.244.121.0', port=80): Max retries exceeded with url: /name?id=1 
   (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f98d6b6e470>: 
    Failed to establish a new connection: [Errno 111] Connection refused',))

任何帮助,将不胜感激!

Github 仓库:https ://github.com/LAMike310/pokedex

4

1 回答 1

1

我现在可以使用远程调用我的 API ,而不是python client.py直接调用。21 buy http://10.244.121.0:5000/name?id=1

于 2016-07-24T22:12:28.953 回答