Why did flask_ngrok have ConnectionRefusedError: [Errno 111] Connection refused error on Colab

huangapple go评论154阅读模式
英文:

Why did flask_ngrok have ConnectionRefusedError: [Errno 111] Connection refused error on Colab

问题

我尝试在Colab上使用Flask。以下是我在Google Colab上的代码:

from flask import Flask
!pip install flask_ngrok
from flask_ngrok import run_with_ngrok

app = Flask(__name__)
run_with_ngrok(app) 

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

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

这是来自示例的代码(顺便说一句,这个笔记本本身存在不同的模块错误),但我一直收到以下错误:

Exception in thread Thread-11:
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "/usr/local/lib/python3.10/dist-packages/urllib3/util/connection.py", line 95, in create_connection
    raise err
  File "/usr/local/lib/python3.10/dist-packages/urllib3/util/connection.py", line 85, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py", line 398, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connection.py", line 244, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.10/http/client.py", line 1283, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1329, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 976, in send
    self.connect()
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connection.py", line 205, in connect
    conn = this_new_conn()
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f0594e70ca0>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/requests/adapters.py", line 440, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py", line 787, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.10/dist-packages/urllib3/util/retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4040): Max retries exceeded with url: /api/tunnels (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f0594e70ca0>: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.10/threading.py", line 1378, in run
    self.function(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.10/dist-packages/flask_ngrok.py", line 70, in start_ngrok
    ngrok_address = _run_ngrok()
  File "/usr/local/lib/python3.10/dist-packages/flask_ngrok.py", line 35, in _run_ngrok
    tunnel_url = requests.get(localhost_url).text  # Get the tunnel information
  File "/usr/local/lib/python3.10/dist-packages/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.10/dist-packages/requests/sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/requests/adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=4040): Max retries exceeded with url: /api/tunnels (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f0594e70ca0>: Failed to establish a new connection: [Errno 111] Connection refused'))

有人能告诉我问题在哪里吗?我按照教程的步骤进行操作,它们给了我类似的答案,但都导致了这个错误。我期望得到一个像教程中显示的ngrok链接。

英文:

I was trying to flask via colab. Below is my code on google Colab:

from flask import Flask
!pip install flask_ngrok
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app) 
@app.route(&quot;/&quot;)
def hello():
return &quot;Hello World!&quot;
if __name__ == &#39;__main__&#39;:
app.run()

It is from this example (btw, this notebook itself has a different module error), but I kept getting

Exception in thread Thread-11:
Traceback (most recent call last):
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connection.py&quot;, line 174, in _new_conn
conn = connection.create_connection(
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/util/connection.py&quot;, line 95, in create_connection
raise err
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/util/connection.py&quot;, line 85, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py&quot;, line 703, in urlopen
httplib_response = self._make_request(
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py&quot;, line 398, in _make_request
conn.request(method, url, **httplib_request_kw)
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connection.py&quot;, line 244, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File &quot;/usr/lib/python3.10/http/client.py&quot;, line 1283, in request
self._send_request(method, url, body, headers, encode_chunked)
File &quot;/usr/lib/python3.10/http/client.py&quot;, line 1329, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File &quot;/usr/lib/python3.10/http/client.py&quot;, line 1278, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File &quot;/usr/lib/python3.10/http/client.py&quot;, line 1038, in _send_output
self.send(msg)
File &quot;/usr/lib/python3.10/http/client.py&quot;, line 976, in send
self.connect()
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connection.py&quot;, line 205, in connect
conn = self._new_conn()
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connection.py&quot;, line 186, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x7f0594e70ca0&gt;: Failed to establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File &quot;/usr/local/lib/python3.10/dist-packages/requests/adapters.py&quot;, line 440, in send
resp = conn.urlopen(
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py&quot;, line 787, in urlopen
retries = retries.increment(
File &quot;/usr/local/lib/python3.10/dist-packages/urllib3/util/retry.py&quot;, line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=&#39;localhost&#39;, port=4040): Max retries exceeded with url: /api/tunnels (Caused by NewConnectionError(&#39;&lt;urllib3.connection.HTTPConnection object at 0x7f0594e70ca0&gt;: Failed to establish a new connection: [Errno 111] Connection refused&#39;))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File &quot;/usr/lib/python3.10/threading.py&quot;, line 1016, in _bootstrap_inner
self.run()
File &quot;/usr/lib/python3.10/threading.py&quot;, line 1378, in run
self.function(*self.args, **self.kwargs)
File &quot;/usr/local/lib/python3.10/dist-packages/flask_ngrok.py&quot;, line 70, in start_ngrok
ngrok_address = _run_ngrok()
File &quot;/usr/local/lib/python3.10/dist-packages/flask_ngrok.py&quot;, line 35, in _run_ngrok
tunnel_url = requests.get(localhost_url).text  # Get the tunnel information
File &quot;/usr/local/lib/python3.10/dist-packages/requests/api.py&quot;, line 75, in get
return request(&#39;get&#39;, url, params=params, **kwargs)
File &quot;/usr/local/lib/python3.10/dist-packages/requests/api.py&quot;, line 61, in request
return session.request(method=method, url=url, **kwargs)
File &quot;/usr/local/lib/python3.10/dist-packages/requests/sessions.py&quot;, line 529, in request
resp = self.send(prep, **send_kwargs)
File &quot;/usr/local/lib/python3.10/dist-packages/requests/sessions.py&quot;, line 645, in send
r = adapter.send(request, **kwargs)
File &quot;/usr/local/lib/python3.10/dist-packages/requests/adapters.py&quot;, line 519, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host=&#39;localhost&#39;, port=4040): Max retries exceeded with url: /api/tunnels (Caused by NewConnectionError(&#39;&lt;urllib3.connection.HTTPConnection object at 0x7f0594e70ca0&gt;: Failed to establish a new connection: [Errno 111] Connection refused&#39;))

Can anyone please tell me what the problem is? I was following the tutorials and they gave me similar answers, and all led to this error from my end.

I was expecting a ngrok link like all tutorials show.

答案1

得分: 3

以下是翻译好的部分:

我自己曾经遇到过完全相同的问题。事实证明,你只需要拥有一个ngrok账户并获取一个认证令牌。修复起来相当容易。

  1. 前往ngrok网站并创建一个账户:https://dashboard.ngrok.com/login

  2. 在左侧的侧边菜单中,会有一个“Your Authtoken”选项。点击那个选项,认证令牌将显示出来,以供你复制。

  3. 在你的Google Colab笔记本中,在pip安装命令的下方包括认证令牌,确保在它之前加上“!”:

!pip install flask-ngrok
!pip install pyngrok==4.1.1
!ngrok authtoken ######在这里填入你的认证令牌######

安装完包之后,你应该在底部看到类似这样的消息:

Why did flask_ngrok have ConnectionRefusedError: [Errno 111] Connection refused error on Colab

这表示你的认证令牌已成功保存。

  1. 再次运行启动Flask应用程序的单元格,服务器应该正在运行并包含一个指向你特定ngrok URL的链接。

我自己的代码中也没有包括这一部分:

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

这个教程对我很有帮助:https://youtu.be/0dYsZt8-nXk

英文:

Was having the exact same problem myself. Turns out you just need to have an ngrok account and get an authentication token. Pretty easy fix.

  1. Go to the ngrok website and create an account: https://dashboard.ngrok.com/login

  2. In the side menu on the left, there will be a "Your Authtoken" option. Click on that, and the authtoken will be displayed for you to copy.

  3. In your google colab notebook, include the auth token at the beginning of your code right below the pip install commands. Make sure to include a "!" before it:

!pip install flask-ngrok
!pip install pyngrok==4.1.1
!ngrok authtoken ######YOUR AUTHTOKEN GOES HERE#####

After the packages have been installed, you should see a message like this at the bottom:

Why did flask_ngrok have ConnectionRefusedError: [Errno 111] Connection refused error on Colab

This indicates your authtoken has been saved successfully.

  1. Run the cell that starts your Flask app again, and the server should be running and contain a link to your specific ngrok url.

I also did not include this part in my own code:

if __name__ == &#39;__main__&#39;:
app.run()

This tutorial was what helped me: https://youtu.be/0dYsZt8-nXk

huangapple
  • 本文由 发表于 2023年6月19日 10:34:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/76503296.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定