首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google Colaboratory机器上打开端口

在Google Colaboratory机器上打开端口
EN

Stack Overflow用户
提问于 2019-06-06 16:32:43
回答 1查看 5.8K关注 0票数 0

我做了一个机器学习谷歌协作,使用网络服务器来显示数据。但是我在运行的时候不能连接外网ip和端口,我想是因为端口没有打开。

我试着打开端口,但Google Colaboratory机器在docker上运行

代码语言:javascript
复制
if multiple_process:
    run(host="172.28.0.2", port=80, server='paste')
else:
    run(host="172.28.0.2", port=8080, server='paste')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-07 00:18:55

Colab后端经过防火墙保护,无法通过公共互联网直接联系。

如果您的目标是从Colab前端连接到在后端运行的服务器,Colab会自动将请求代理到本地主机端口。这里的文档中提供了一个示例:

https://colab.research.google.com/notebooks/snippets/advanced_outputs.ipynb#scrollTo=_7dYIo63EdgL

重现下面的相关代码片段,它启动一个HTTP服务器,然后从单元输出中加载它:

代码语言:javascript
复制
import portpicker
import threading
import socket
import IPython

from six.moves import socketserver
from six.moves import SimpleHTTPServer

class V6Server(socketserver.TCPServer):
  address_family = socket.AF_INET6

class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
  def do_GET(self):
    self.send_response(200)
    # If the response should not be cached in the notebook for
    # offline access:
    # self.send_header('x-colab-notebook-cache-control', 'no-cache')
    self.end_headers()
    self.wfile.write(b'''
      document.querySelector('#output-area').appendChild(document.createTextNode('Script result!'));
    ''')

port = portpicker.pick_unused_port()

def server_entry():
    httpd = V6Server(('::', port), Handler)
    # Handle a single request then exit the thread.
    httpd.serve_forever()

thread = threading.Thread(target=server_entry)
thread.start()

# Display some HTML referencing the resource.
display(IPython.display.HTML('<script src="https://localhost:{port}/"></script>'.format(port=port)))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56473719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档