在使用 pyngrok 时如何防止我的 python 程序加载?

How can I prevent my python program from loading when using pyngrok?

我的脚本中有以下函数

import os, re

from pyngrok import ngrok

def server():
        os.system('kill -9 $(pgrep ngrok)')
        ngrok.connect(443, "tcp")
        while True:
                ngrok_tunnels = ngrok.get_tunnels()
                url = ngrok_tunnels[0].public_url
                if re.match("tcp://[0-9]*.tcp.ngrok.io:[0-9]*", url) is not None:
                        print "your url is : " + url
                        break

它负责生成一个 ngrok tcp link 并且它可以工作,但它会卡住,如下图所示。

enter image description here

如何防止被收费?只需打印 link,他们告诉我有关 monitor_thread 模式的错误,但我不知道如何在我的函数中配置它,非常感谢。

脚本“卡住”的原因是因为pyngrok启动ngrok一个线程来监控日志,Python进程只有在所有线程都完成后才能退出处理。您可以停止监视线程,如 here in the documentation 所示,或者,如果您不需要它,您可以首先阻止它启动:


import os, re

from pyngrok import ngrok
from pyngrok.conf import PyngrokConfig

def server():
    os.system('kill -9 $(pgrep ngrok)')
    ngrok_tunnel = ngrok.connect(443, "tcp", pyngrok_config=PyngrokConfig(monitor_thread=False))
    print("your url is : " + ngrok_tunnel.public_url)

但是,这仍然不能如你所愿。如果你这样做,是的,你将返回到控制台,但是 ngrok 进程也将停止,因为此时它是 Python 的子进程。要让隧道保持打开状态,您需要离开进程 运行。