Как импортировать файл Python из нескольких URL - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь импортировать файл python из URL.Но единственная проблема, которая у меня есть, это то, что, если сеть не работает, мое приложение будет зависать.Возможно, если один URL не работает, я могу переключиться на новый URL?

Мой код:

def import_py_from_url(self, URL):
    import urllib
    exec urllib.urlopen(URL).read() in globals()

self.import_py_from_url("http://exemple.com/python.py")

Ошибка, которую я получаю:

LoginWindow .__ LoadScript.BindObject -: [Ошибка сокета Errno] [Errno 11001] Ошибка getaddrinfo

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Для нескольких URL вот простое решение:

def import_py_from_urls(self, URLS):
    import urllib

    for url in URLS:
        try:
            exec urllib.urlopen(url).read() in globals()
            break
        except Exception as e:
            # logger a warning message
            continue
    else:
        # all url failed.

self.import_py_from_urls(["http://exemple.com/python.py", "http://another.com/python.py"])
0 голосов
/ 22 декабря 2018

Может быть, операторы try: и except: могут помочь.Примерно так:

def import_py_from_url(self, URL): # Maybe also add an `URL2` for the alternative
    import urllib
    try:
        exec urllib.urlopen(URL).read() in globals()
    except:
        # <<< add code for your alternative url >>>

self.import_py_from_url("http://exemple.com/python.py")

На self.import_py_from_url вы можете добавить второй URL напрямую.Это даст вам:

def import_py_from_url(self, URL, URL2): 
    import urllib
    try:
        exec urllib.urlopen(URL).read() in globals()
    except:
        exec urllib.urlopen(URL2).read() in globals()

self.import_py_from_url("http://exemple.com/python.py", "http://example-location2.com/python.py")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...