Рубрики
Без рубрики

Программирование во время офлайн с Python

Мой личный опыт о том, как написать код, который должен работать в автономном режиме. Теги с Python, в автономном режиме.

Я живу на Кубе. Я жил на Кубе, так как я родился и Куба (поверь мне) похоже на Kryptonite для разработчиков программного обеспечения. Будучи одним из заключений с меньшим количеством проникновения в Интернете (только 32,5% населения имеет доступ к Интернету) и имея действительно высокие цены на интернет по сравнению со средним ежемесячным доходом, указывают на это действительно трудно связать большую часть времени. Хотите больше деталей? Проверьте эту ooni Отчет Тем не менее, у нас отличные университеты, а тысячи выпускников каждый год на технологии карьеры. Я был одним из тех. И одна из вещей, которые поражают меня сложнее, иногда работают с онлайн-ресурсами с таким бедным или дорогим доступом в Интернет, и с тех пор, как я люблю код с Python, вот то, что я сделал. Я кодировал проект, где мне нужно было получить некоторые данные из сервиса онлайн И это было раздражение, так как я делал что-то уродливое и неодавленное, как:

def doit():
    return 'false response'

    text_from_internet = get_data()
    return text_from_internet

И когда я наконец был в сети и собираюсь проверить мою работу, я прокомментировал ложное возвращение:

def doit():
    # return 'false response'

    text_from_internet = get_data()
    return text_from_internet

Это так уродливо, я полностью смущен, чтобы показать вам, что я делал. Но я не остановился. Через некоторое время с использованием этого уродливого исправления и возникновения проблем со всеми видами, потому что я выключаю курс Foruet, чтобы комментировать/бесцензировать мои линии нежелательного кода, я решил найти лучший способ сделать это и написал свой собственный декорист, чтобы справиться с такими проблемами:

def offline_sandbox_value(value):
    def decorator(func):
        @wraps(func)
        def inner(*args, **kwargs):
            if SANDBOX:
                logging.debug('** Sandboxed ' + func.__name__ + '() with value: ' + value)
                return value
            else:
                return func(*args, **kwargs)

        return inner

    return decorator

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

SANDBOX = True

@offline_sandbox_value('false response')
def doit():
    text_from_internet = get_data()
    return text_from_internet

А затем переключите песочницу в Ложь Всякий раз, когда я запускаю свой код онлайн. Это полезно, если я заинтересован в Sandboxing все (даже если у меня есть доступ), но что, если я хочу проверить наличие ресурса и песочницы, метод, если я не могу достичь данного URL? Ну, давайте сделаем это:

def offline_sandbox_value(value, url=None):
    def decorator(func):
        @wraps(func)
        def inner(*args, **kwargs):
            if url:
                if connect_to(url):
                    return func(*args, **kwargs)
                else:
                    logging.debug('** Sandboxed '+func.__name__+'() with value: '+value)
                    return value

            elif SANDBOX:
                logging.debug('** Sandboxed ' + func.__name__ + '() with value: ' + value)
                return value
            else:
                return func(*args, **kwargs)

        return inner

    return decorator

И теперь я могу пройти URL-адрес моего декоратора, и мне не нужно определять ценность для песочницы, если я. Так что мой код будет чем-то вроде:

@offline_sandbox_value('false response', url='https://im-online.herokuapp.com/')
def doit():
    text_from_internet = get_data()
    return text_from_internet

И поскольку я использовал это в различных проектах, и мне очень полезно, я решил упаковать его и укопить его на Pypi с именем Offline_sandbox. Так что другие могут использовать это тоже. Это также на Github здесь Вы хотите внести свой вклад? Откройте проблему или потяните запрос:-) Спасибо за чтение.

Оригинал: “https://dev.to/jadolg/programming-while-offline-with-python”