目录
在 Google Colab 如何使用代理端口将 Python 服务转发到公网访问
Google Colab是由Google提供的一项免费的云端Jupyter笔记本服务。它允许用户在浏览器中编写和执行Python代码,并且无需进行任何本地安装。Google Colab提供了强大的计算资源,包括GPU和TPU,可用于加速机器学习和数据科学任务。
本篇文章介绍如何在 Colab 中执行 Python Flask 程序,主要完成以下两个目的:
- Colab 中的 Flask 程序可通过域名公网访问
- Colab 中的 Flask 程序可访问 Google Drive 中的静态文件
1. 端口转发Colab中运行的Flask程序
重点在于下面两行代码
# port forward
from google.colab.output import eval_js
print(eval_js("google.colab.kernel.proxyPort(5000)"))
这里使用Flask只是个示例,不局限于使用Flask,只要是端口上的服务都可以暴露
其中的端口就是你服务的端口,完整的 Colab 程序如下:
# 安装依赖
!pip install flask
# 端口转发
from google.colab.output import eval_js
print(eval_js("google.colab.kernel.proxyPort(5000)"))
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return '<span>The Server is Running.</span>'
if __name__ == '__main__':
app.run()
点击单元格左侧运行按钮,控制台的输出里包含 分配的域名,使用此域名即可实现公网访问,Greet
2. Flask程序返回Drive中的静态文件
升级上面章节的代码,实现 Flask 中 Templates 模板文件的返回,在 Google Drive 目录下创建一个 templates 目录,在 templates 目录中新建一个 index.html 的测试文件,并写入内容
这里的 template 路径可放在 Drive 任意地方,不局限于跟路径
加入 挂载Drive 的代码,且 指定模板路径,下面代码 注释 是变动后的地方,完整的代码如下:
from google.colab.output import eval_js
print(eval_js("google.colab.kernel.proxyPort(5000)"))
# 挂载Google Drive,程序运行的时候会弹出授权请求
from google.colab import drive
drive.mount('/content/gdrive/')
from flask import Flask, render_template
# 指定模板目录的路径
app = Flask(__name__, template_folder='/content/gdrive/MyDrive/templates')
@app.route('/')
def index():
return '<span>The Server is Running.</span>'
# 返回模板文件
@app.route('/index')
def html():
return render_template('index.html')
if __name__ == '__main__':
app.run()
保存运行,访问 https://xxx.xxx.xxx/index 路径将会得到 index.html 中的内容,Perfect
如何在 Drive 中定位资源目录 ?
如果你的 templates 目录不在根路径,如何定位到模版目录的路径,其实很简单,鼠标移到到挂载Drive的代码处,cmd+点击即可弹出,按着目录坐标定位模板目录即可