Я пытаюсь создать API на своем локальном компьютере и вызвать этот API из SSH
server.py:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/", methods=["GET"])
def get_info():
return jsonify({"data": "hi"})
# from openai import OpenAI
if __name__ == "__main__":
app.run(debug=True)
и это client.py на машине SSH.
Редактировать: я имею в виду. server.py создается на локальном хосте. и client.py (еще один проект) создается по SSH (насколько я понимаю, это удаленная машина). Хотя оба созданы на моей машине.
import requests
import json
import socket
# request = b"GET / HTTP/1.1\nHost: www.cnn.com\n\n"
s = socket.socket()
s.connect(("127.0.0.1",5000))
s.sendall(b"GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n")
print(s.recv(1024))
url = 'http://localhost:5000'
response = requests.get(url)
print(response)
# print(str(response))
# print('')
# print(json.dumps(response.json(), indent=4))
Извините, я вообще ничего не понимаю в сокете. Я просто следую коду в Интернете, но он не работает.
Спасибо. вы.
Изменить: при запуске client.py по SSH. Я получил результат ошибки
b'HTTP/1.1 404 Not Found\r\nTransfer-Encoding: chunked\r\nDate: Mon, 16 Sep 2024 08:44:33 GMT\r\nServer: Warp/3.3.17\r\n\r\n0\r\n\r\n'
Я тоже следил за этим. но не работает:
Вариант 2: использовать SSH-туннелирование (переадресация портов)
Если локальный API привязан к localhost и вы не хотите публиковать его, туннелирование SSH является более безопасным вариантом.
2.1. Сохраняйте привязку API к локальному хосту
Обычно запустите API на локальном компьютере, сохраняя его привязку к локальному хосту. Например:flask run --host=127.0.0.1 --port=5000
ssh -L 4032:localhost:5000 [email protected]
curl http://localhost:5000
Тест (стоять на удаленном компьютере):
import requests
requests.get("http://127.0.0.1:4032")
->
import requests
requests.get("http://localhost:4032")
->
import requests
requests.get("http://localhost:5000")
->
Подробнее здесь: https://stackoverflow.com/questions/789 ... t-from-ssh