我正在Colab 中开发streamlit
和使用ui pyngrok
。一切正常,直到几天前隧道未找到错误开始发生。我正在使用下面的代码。我也升级pyngrok
并尝试过,但同样的问题仍然存在。整个 UI 构建和 Colabpyngrok
似乎都是最方便的学习方式。但是现在这停止工作,如果有人也可以建议任何其他方法或者我做错了什么,那就太好了
!pip install streamlit
!pip install pyngrok==4.1.1
import streamlit as st
from pyngrok import ngrok
# !ngrok authtoken (mykey)
# writefile app.py
def main():
# app body
pass
if __name__=='__main__':
main()
!streamlit run app.py &>/dev/null&
public_url = ngrok.connect(port='8501')
public_url
#the log is also attached below after running above code which runs without errors as can be seen
#output below
2021-01-30 09:30:44.197 INFO pyngrok.process: ngrok process starting: 1106
2021-01-30 …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的Uvicorn应用程序(使用FastAPI构建)。开发中,uvicorn server:app --reload
。该--reload
参数表示将启动两个线程,一个用于服务器,一个用于监视文件更改\xe2\x80\x94当检测到文件更改时,将重新启动服务器线程。
到目前为止没有什么特别的。这在 Flask、Django 和其他开发服务器中也很常见。问题是,我想pyngrok
在启动开发服务器时使用打开一个隧道,并且我希望该隧道与这两个线程的父线程一样长寿。也就是说,当检测到文件更改并重新启动开发服务器时,我不希望重新启动隧道(因为ngrok
这会导致生成新的公共 URL 并中断现有连接)。
使用 Flask 和 Django,这相对容易完成。例如,对于 Flask,我只是这样做os.environ.get("WERKZEUG_RUN_MAIN") != "true"
,对于 Django,我类似地评估RUN_MAIN
环境变量,并且在任何一种情况下,我仅在将这些设置为 时才实例化隧道true
。我找不到与 Uvicorn 一起使用的类似变量。有人可以帮忙吗?
我有一个这样的代码。我正在启动它。我得到一个 ngrok 链接。
!pip install aiohttp pyngrok
import os
import asyncio
from aiohttp import ClientSession
# Set LD_LIBRARY_PATH so the system NVIDIA library becomes preferred
# over the built-in library. This is particularly important for
# Google Colab which installs older drivers
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})
async def run(cmd):
'''
run is a helper function to run subcommands asynchronously.
'''
print('>>> starting', *cmd)
p = await asyncio.subprocess.create_subprocess_exec(
*cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
async def pipe(lines):
async for line in lines:
print(line.strip().decode('utf-8'))
await asyncio.gather( …
Run Code Online (Sandbox Code Playgroud) 我的代码同时使用flask(http,作为主线程)、ngrok 和tcp 服务器(ngrok 和tcp 服务器都在两个线程上运行)时遇到问题(请参阅下面的错误消息)
Traceback (most recent call last):
File "/home/monki/anaconda3/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/monki/anaconda3/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/monki/VSCode/Python/Webhook/app.py", line 49, in launchServer
s.bind((hostname, TCP_PORT))
OSError: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)
我已经使用检查了端口
ps -fA | grep python
Run Code Online (Sandbox Code Playgroud)
发现没有端口被使用
root 910 1 0 15:02 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 1036 1 0 15:02 ? 00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
x 6316 5499 0 15:55 pts/0 00:00:00 grep --color=auto python
Run Code Online (Sandbox Code Playgroud)
这是我的代码
from flask …
Run Code Online (Sandbox Code Playgroud) from pyngrok import ngrok
public_url = ngrok.connect(5000).public_url
Run Code Online (Sandbox Code Playgroud)
我从 twilio 的文档中获取了这两行代码,用于自动化 ngrok 连接。基本上,我只是尝试建立连接并将 Web url 用作 Webhook。但我的日志不断给我这个错误:
Downloading ngrok ...
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 1346, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\http\client.py", line 1279, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\http\client.py", line 1325, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\http\client.py", line 1274, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\http\client.py", line 1034, in _send_output
self.send(msg)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\http\client.py", line 974, in send …
Run Code Online (Sandbox Code Playgroud)