Как я могу предотвратить загрузку моей python программы при использовании pyngrok? - PullRequest
1 голос
/ 05 августа 2020

У меня в скрипте есть следующая функция

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

Это отвечает за создание tcp-ссылки ngrok, и она работает, но застревает, как на изображении ниже.

введите описание изображения здесь

Как я могу предотвратить его зарядку? И просто распечатайте ссылку, они сказали мне про режим monitor_thread в False, но я не знаю, как его настроить в своей функции, заранее большое спасибо.

1 Ответ

0 голосов
/ 05 августа 2020

Причина, по которой сценарий «зависает», заключается в том, что pyngrok запускает ngrok с потоком для отслеживания журналов, а процесс Python не может завершиться, пока все потоки не будут обработаны. Вы можете остановить поток монитора, как показано здесь, в документации , или, если он вам не нужен, вы можете предотвратить его запуск в первую очередь:


import os, re

from pyngrok import ngrok
from pyngrok.conf import PyngrokConfig

def server():
    os.system('kill -9 $(pgrep ngrok)')
    ngrok.connect(443, "tcp", pyngrok_config=PyngrokConfig(monitor_thread=False))
    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 также будет остановлен, так как на данный момент это подпроцесс Python. Чтобы туннели оставались открытыми, нужно оставить процесс запущенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...