Как решить Невозможно найти сервер на www.googleapis.com, когда не подключен к Интернету с помощью приложения Python - PullRequest
0 голосов
/ 14 июня 2019

У меня есть настольное приложение, созданное на python, которое работает как отдельное приложение, оно отлично работает, не полагаясь на интернет. Только для подключения к Google Drive приложению требуется подключение к Интернету.

Проблема заключается в том, что при запуске приложения, когда оно не подключено к Интернету, приложение аварийно завершает работу, поскольку оно содержит операторы импорта, относящиеся к подключению к Интернету.

Что работает: При комментировании операторов импорта, связанных с подключением к Интернету, приложение работает нормально в автономном режиме.

Что не работает: Когда операторы импорта включены в код и при отсутствии подключения к Интернету, приложение просто падает. Некоторый псевдокод ниже.

main.py

from kivy.app import App
'''More import statements'''
....
....
from helper import Hi

class Hello(Hi):
'''Rest of the Code goes here'''
...
...
...

helper.py

'''If the device is not connected to the internet, the following internet import statements throw an error. These imports are needed to connect Google Drive.'''

from __future__ import print_function
import httplib2
import os, io

from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
from apiclient.http import MediaFileUpload, MediaIoBaseDownload
try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None
import auth

class Hi:
pass
'''Rest of the Code goes here'''
...
...
...

Expectation: Нужен способ, чтобы приложение работало даже при отсутствии подключения к интернету. Если нет подключения к Интернету, предупредите пользователя, чтобы он подключился к Интернету для доступа к Google Диску, а не просто зависал.

Ошибка: httplib2.ServerNotFoundError: Невозможно найти сервер по адресу www.googleapis.com

Я понимаю, что код python читается сверху вниз, приложение вылетает, когда операторы импорта проверяют, что он не подключен к Интернету. Есть ли способ заставить приложение работать в автономном режиме, а для онлайн-действий попросить пользователя подключиться к Интернету?

Ценю вашу помощь в этом вопросе.

1 Ответ

0 голосов
/ 15 июня 2019

удалось разобраться с помощью этой ссылки .Проблема заключалась не в том, что операторы импорта ссылались на эти операторы.

Решение было следующим:

helper.py

from __future__ import print_function
import httplib2
import os, io

from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
from apiclient.http import MediaFileUpload, MediaIoBaseDownload
try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None
import auth

import socket

class Hi:

    def is_connected():
        try:
        # connect to the host -- tells us if the host is actually reachable
            socket.create_connection(("www.google.com", 80))
            print("Connected to the internet, execute code.")
            self.fileUpload() #----- function is called, if host is reachable.
        except OSError:
            print("No internet, code not executed.")

   def fileUpload():
       # This is the function that requires the import statements
       ...
       ...
...