Как обслуживать API на локальном хосте и получать к нему доступ по sshPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как обслуживать API на локальном хосте и получать к нему доступ по ssh

Сообщение Anonymous »

У меня нет опыта в этом.
Я пытаюсь создать 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»