2

我的脚本中有以下功能

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 链接并且它可以工作,但它会像下图一样卡住。

在此处输入图像描述

我怎样才能防止它被收费?只需打印链接,他们告诉我有关monitor_threadFalse 模式的信息,但我不知道如何在我的功能中配置它,非常感谢您提前。

4

1 回答 1

0

脚本“卡住”的原因是pyngrokngrok一个线程开始监视日志,并且 Python 进程在所有线程都处理完之前无法退出。您可以停止监视器线程,如文档中所示,或者,如果您没有使用它,您可以从一开始就阻止它启动:


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 的子进程。要让隧道保持打开状态,您需要让进程保持运行。

于 2020-08-04T22:57:24.993 回答