【问题标题】:How to use Flask in Google Colaboratory Python Notebook?如何在 Google Colaboratory Python Notebook 中使用 Flask?
【发布时间】:2023-03-04 07:15:08
【问题描述】:

我正在尝试在 Google Colab Python 笔记本中使用 Flask 构建网站。但是,运行在常规 Python 上运行的常规 Flask 代码无法在 Google Colab 上运行。我需要可以解决的代码.. :)

【问题讨论】:

  • 您可能会遇到 CORS(跨源资源共享)限制,或者无法在笔记本环境中使用的 Flask 魔法。
  • 那么在 Google Colab 中使用 Python Notebooks 构建 Web 框架有不同的方法吗?

标签: python flask google-colaboratory


【解决方案1】:

服务器代码:

import socket
print(socket.gethostbyname(socket.getfqdn(socket.gethostname())))

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

import threading
threading.Thread(target=app.run, kwargs={'host':'0.0.0.0','port':80}).start() 

客户端代码:

import requests
r = requests.get("http://172.28.0.2/")
print(r.status_code)
print(r.encoding)
print(r.apparent_encoding)
print(r.text)

要重启 Flask,你可以点击菜单:runtime->restart runtime

分享链接here

【讨论】:

  • 有什么方法可以在不执行restart runtime的情况下将“Control-C”发送到服务器?
【解决方案2】:

服务器端代码又名:后端

from flask import Flask
import threading

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

threading.Thread(target=app.run, kwargs={'host':'0.0.0.0','port':6060}).start()

在 colab 中渲染服务器

import IPython.display

def display(port, height):
    shell = """
        (async () => {
            const url = await google.colab.kernel.proxyPort(%PORT%, {"cache": true});
            const iframe = document.createElement('iframe');
            iframe.src = url;
            iframe.setAttribute('width', '100%');
            iframe.setAttribute('height', '%HEIGHT%');
            iframe.setAttribute('frameborder', 0);
            document.body.appendChild(iframe);
        })();
    """
    replacements = [
        ("%PORT%", "%d" % port),
        ("%HEIGHT%", "%d" % height),
    ]
    for (k, v) in replacements:
        shell = shell.replace(k, v)

    script = IPython.display.Javascript(shell)
    IPython.display.display(script)

display(6060, 400)

【讨论】:

    【解决方案3】:
    !pip install flask-ngrok
    
    
    from flask import Flask
    from flask import request
    from flask_ngrok import run_with_ngrok
    
    app = Flask(__name__)
    run_with_ngrok(app)  # Start ngrok when app is run
    
    # for / root, return Hello Word
    @app.route("/")
    def root():
        url = request.method
        return f"Hello World! {url}"
    
    app.run()
    

    https://medium.com/@kshitijvijay271199/flask-on-google-colab-f6525986797b

    【讨论】:

      【解决方案4】:
      from flask_ngrok import run_with_ngrok
      from flask import Flask
      
      app = Flask(__name__)
      
      run_with_ngrok(app)  
      @app.route("/")
      
      def home():
          return f"Running Flask on Google Colab!"
      
      app.run()
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      猜你喜欢
      • 2019-05-24
      • 2020-06-16
      • 2018-08-04
      • 1970-01-01
      • 2020-06-19
      • 2019-07-02
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多