有没有在Google Colab上运行Web应用程序的一般方法?

发布于 2021-01-29 15:21:41

我想在Google colab中开发Web应用程序。唯一的问题是,您需要将浏览器连接到本地主机才能查看该Web应用程序,但是Google
colab在笔记本中没有浏览器。

但是似乎有一些解决方法。例如,run_with_ngrok是用于在colab / jupyter笔记本中运行flaks应用程序的库

https://github.com/gstaff/flask-ngrok#inside-jupyter--colab-
notebooks

使用它时,它会提供一个随机地址“在http://.ngrok.io上运行”

而且,以某种方式在Google colab上运行的Web应用程序也在该地址上运行。

对于Flask应用程序来说,这是一个很好的解决方案,但我希望能在Google Colab上运行Web应用程序,而不仅仅是Flask。在colab /
jupyter笔记本中有运行Webapp的通用方法吗?

关注者
0
被浏览
172
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以计划在端口(例如port = 8000)上启动服务器。查找使用此方法的URL。

    from google.colab.output import eval_js
    print(eval_js("google.colab.kernel.proxyPort(8000)"))
    # https://z4spb7cvssd-496ff2e9c6d22116-8000-colab.googleusercontent.com/
    

    然后,启动服务器,例如

    !python -m http.server 8000
    

    然后单击上方的第一个链接(而不是localhost或127.0.0.1),它将在新选项卡中打开。

    在单元格中显示

    您可以在输出部件的iframe中显示结果。我把它变成一个易于调用的函数。

    from IPython.display import Javascript
    
    def show_port(port, height=400):
      display(Javascript("""
      (async ()=>{
        fm = document.createElement('iframe')
        fm.src = await google.colab.kernel.proxyPort(%s)
        fm.width = '95%%'
        fm.height = '%d'
        fm.frameBorder = 0
        document.body.append(fm)
      })();
      """ % (port, height) ))
    

    现在,您可以在后台启动一个webapp(这里是http.server)。并将结果显示为下方的iframe。

    get_ipython().system_raw('python3 -m http.server 8888 &') 
    show_port(8888)
    

    要停止服务器,您可以调用ps并终止该进程。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看