agencies

colab 환경에서 웹 사이트 구축해보기 (flask / ngrok) 및 python 코드 실행해보기! 본문

Ⅳ. 기타

colab 환경에서 웹 사이트 구축해보기 (flask / ngrok) 및 python 코드 실행해보기!

agencies 2024. 11. 29. 12:06

1. 우선 ngrok 사이트에서 회원가입을 진행해야 합니다. (토큰)

https://ngrok.com/

 

ngrok | API Gateway, IoT Device Gateway, Secure Tunnels for Containers, Apps & APIs

ngrok is a secure ingress platform that enables developers to add global server load balancing, reverse proxy, firewall, API gateway and Kubernetes Ingress to applications and APIs.

ngrok.com

> 여기서 회원가입을 진행합니다.

그럼 dashboard에서 (Your Authtoken 을 눌러서 확인합니다)

 

※ 코랩에서 아래의 명령을 입력합니다.

 
!pip install flask flask-ngrok

 

!wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
!./ngrok authtoken (여기에 복사한 토큰을 입력)

 

from flask import Flask
from flask_ngrok import run_with_ngrok

app = Flask(__name__)
run_with_ngrok(app)  # Ngrok을 Flask 앱과 연결

@app.route("/")
def home():
    return "Hello, this is a Flask app running in Colab!"

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

이것을 실행하면 아래와 같이 출력됩니다.

 

 

계속 실행이 되는 부분은 정상이니 안심하시고

터미널에서 ngrok를 하면 됩니다.

 

터미널에 아래의 명령을 입력합니다.

./ngrok http 5000

 

 

 

그러면 forwarding 부분에 있는 주소를 URL에 입력합니다.

 

보라색 버튼 visit 을 누르면....

 

이렇게 로컬에서 내용을 볼 수 있게 됩니다.

외부에서도 보입니다.!


 

 

이제 파이썬 코드를 가져와 실행해보는 작업을 해보겠습니다!

%%writefile my_python_logic.py

def run_custom_code():
    """
    실행할 Python 코드 로직.
    여기에 복잡한 연산, 모델 실행 등을 추가할 수 있습니다.
    """
    result = sum(range(1, 11))  # 간단한 예제: 1부터 10까지 합 계산
    return f"Result of Python Code: {result}"

 

이렇게 파일을 생성하고!

 

from flask import Flask, render_template_string, request
from my_python_logic import run_custom_code  # 별도 블록에서 작성한 Python 코드 가져오기

# Flask 앱 생성
app = Flask(__name__)

# HTML 템플릿
html_template = """
<!DOCTYPE html>
<html>
<head>
    <title>Flask Button Example</title>
</head>
<body>
    <h1>Run Python Code from Flask</h1>
    <form action="/run_code" method="post">
        <button type="submit">Run Python Code</button>
    </form>
    <p>{{ result }}</p>
</body>
</html>
"""

# 라우트 설정
@app.route("/", methods=["GET"])
def index():
    return render_template_string(html_template, result="")

@app.route("/run_code", methods=["POST"])
def run_code():
    # Python 코드를 실행하고 결과를 받아옴
    result = run_custom_code()
    return render_template_string(html_template, result=result)

if __name__ == "__main__":
    from flask_ngrok import run_with_ngrok
    run_with_ngrok(app)  # Ngrok과 연동
    app.run()

 

해당 파일을 읽어와 처리할 수 있도록 코드를 수정합니다.

 

def run_custom_code(): 

이렇게 함수로 선언된 부분을 가지고 올 수 있게 됩니다!

 

 

 

※ 플라스크를 처음 보지만.. 이번에 차근차근 분석해보며 진행을 해야겠습니다..