python - 使用pyngrok时如何防止我的python程序加载?
问题描述
我的脚本中有以下功能
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_thread
False 模式的信息,但我不知道如何在我的功能中配置它,非常感谢您提前。
解决方案
脚本“卡住”的原因是pyngrok
从ngrok
一个线程开始监视日志,并且 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 的子进程。要让隧道保持打开状态,您需要让进程保持运行。