Локально разместите веб-приложение в Windows 10 с помощью Flask и Python с помощью одной строки кода

#python #flask #networking #network-programming #web-hosting

#python #flask #сеть #сетевое программирование #веб-хостинг

Вопрос:

Я создал веб-приложение с использованием flask, и на данный момент я не смогу разместить его на облачном сервере. Я хочу разместить его в своей ОС Windows 10, и меня не беспокоит наличие у приложения безопасных сертификатов, поскольку оно предназначено для отображения в качестве прототипа. Для демонстрации результата приложения достаточно трех файлов:

myapp.py :

 # This a Natural Language Processing app using a machine learning model

class Lingus:
    def __init__(self, data):
        self.text = data
    def output(self):
        return self.text " - " self.text "n" self.text
  

Далее находится html-файл в папке templates templates/my-form.html :

 <form method="POST">
    <input name="text">
    <input type="submit">
</form>
  

Наконец, скрипт на python, использующий flask для приложения под названием main.py :

 from flask import Flask, request, render_template
from myapp import Lingus

app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['text']
    processed_text = text.upper()
    result = Ling(text)
    return result.output()

if __name__ == "__main__":
    app.run(debug=True)
  

Опять же, цель состоит в том, чтобы сделать это приложение доступным через любой веб-браузер (не локально), используя Windows 10. У меня нет опыта в серверной разработке или сетевой инженерии, но я думаю, что это технически возможно.

PS: мне не нужно, чтобы приложение имело сертификаты безопасности для клиентов.

Комментарии:

1. Похоже, вам может потребоваться изучить переадресацию портов

2. почему бы вам не разместить его в pythonanywhere.com бесплатно? в противном случае, чтобы сделать ваши веб-страницы доступными 24/7, ваш компьютер не должен выключаться, что приведет к его повреждению, если вам все еще нужно продолжать, нужно выполнить множество настроек, сначала нужно установить веб-сервер, такой как apache, затем вам нужно указать статический IP-адрес, google для получения полного руководства

3. Взгляните на ngrok . Это позволяет избежать необходимости переадресации портов и предоставляет общедоступный URL-адрес, который сопоставляется с локальным портом при запуске их клиента вместе с приложением на вашем ПК. Демонстрация прототипов входит в их предлагаемые варианты использования. При правильной настройке это обеспечит безопасный общедоступный URL-адрес, позволяющий запускать приложение локально без SSL (аналогично производственной настройке, с обратным прокси, завершающим SSL).

4. @ v25 Спасибо, приятель! Ваше решение было идеальным.

Ответ №1:

Решение v25 в комментарии к вопросу сработало отлично. Это позволило избежать переадресации портов и состояло из загрузки ngrok и написания одной строки кода для локального размещения приложения. Вам нужно только загрузить ngrok на бесплатную учетную запись и написать ngrok http < PORT ON WHICH YOUR APP IS RUNNING > . Я запускал свое приложение flask на порту 5000, поэтому в моем случае я запустил приложение локально, открыл ngrok.exe и написал:

 ngrok http 5000
  

И это все. Теперь я могу показать прототип своего приложения любому и предоставить его пользователям для тестирования. Однако адрес приложения меняется каждые 8 часов, вам следует обновить свою учетную запись, чтобы получить статический адрес для вашего приложения.

Комментарии:

1. Хороший последующий ответ 🙂 Я полагаю, что бесплатный уровень также изменяет общедоступный URL-адрес каждый раз ngrok , когда процесс перезапускается, к вашему сведению.

2. @v25 Спасибо, оно меняется каждые 8 часов, но в целом это было именно то, что искал. Цена получения статического общедоступного URL-адреса на данный момент составляет 5 долларов в месяц, поэтому заплатить за такую низкую цену не проблема.