Как всегда, сегодня хороший день для кодинга! В этом сообщении в блоге я расскажу о своем опыте проверки своих знаний о языке программирования Rust и, наконец, исправлю ошибку, которая произошла во вчерашнем сообщении. (Вы не поверите, в чем проблема)

Обзор языка программирования Rust

Поскольку мой основной проект связан с использованием языка программирования Rust, мне придется освежить свои навыки программирования на Rust(y).

Сначала откройте каталог вашего проекта. В моем случае я назвал каталог, в котором находятся все мои проекты, amorfati (если вы знаете, вы знаете!). Затем, когда Rust уже установлен, используйте cargo new [file_name] для начала. Небольшое примечание: есть несколько правил, когда речь заходит об именовании каталога Rust. Вы не можете начинать имя файла с # или цифры. Следовательно, я не буду называть файл #100DaysOfCode-Day7-Rust_Review, а просто Day7-Rust_Review. Затем откройте только что созданный каталог грузов. Вы обнаружите, что структура выглядит следующим образом:

-amorfati
    >Day7-Rust_Review:
        Cargo.tml
        >src:
            main.rs

Если вы зайдете в каталог src, вы найдете основной исходный код Rust с именем main.rs. Откройте его в своем любимом редакторе и отредактируйте код следующим образом:

После этого запустите код, используя cargo run. Это автоматически скомпилирует и запустит приложение Rust при отсутствии ошибок.

Вернуться к MongoDB

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

Проходя обучение, кажется, я столкнулся с другой ошибкой. На этот раз при попытке установить пакет flask-mongoengine я столкнулся с ошибкой pipenv.exceptions.ResolutionFailure. Сначала это была действительно странная ошибка, потому что когда я запускал pipenv install flask заранее, она работала отлично.

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

Pipenv объединяет управление пакетами (из pip) с виртуальной средой в одном инструменте, следовательно, pip-env. Этот инструмент можно использовать для установки, удаления, отслеживания и документирования ваших зависимостей и для создания, использования и управления вашей виртуальной средой. По сути, pipenv — это pip инструмент и virtualenv, объединенные в один продукт. ["Источник"]

Когда вы начинаете проект с Pipenv, инструмент автоматически создает виртуальную среду, Pipfile и Pipfile.lock. Pipfile очень похож на файл requirements.txt. Когда вы устанавливаете пакет с pipenv install, Pipfile автоматически обновляется новой зависимостью.

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

Возвращаясь к моему случаю, моя ошибка была в имени flask-mongoengine.

Оказалось, что вместо установки flask-mongoengine я пытался установить flask-monoengine. Несмотря на то, что pip смог «установить» этот вымышленный пакет, Pipfile не смог найти подходящей зависимости, чтобы заблокировать его. Отсюда и ошибка блокировки.

На самом деле оказалось, что мне не пришлось искать слишком далеко; в сообщении об ошибке четко упоминается ERROR: ERROR: Could not find a version that matches flask-monoengine.

Исправить эту проблему легко: вручную просмотрите примечание Pipfile и удалите опечатку. Сделав это, вы сможете нормально установить flask-mongoengine без каких-либо проблем. Убедитесь, что вы не повторяете одну и ту же опечатку!

После установки MonoEngine мы можем создать новый каталог с именем database. Он будет содержать сценарии Python, которые будут управлять содержимым, и функцию для инициализации базы данных. Внутри нашей папки database создайте два разных скрипта Python:

Теперь, после ввода кода выше, я встречаюсь со следующей ошибкой (той же ошибкой, с которой я столкнулся вчера):

Теперь поиск в Google pymongo.errors.ServerSelectionTimeoutError: … No connection could be made because the target machine actively refused it привел меня на этот веб-сайт. По-видимому, эта ошибка возникает, когда я пытаюсь выполнить операцию с MongoDB, но сервер MongoDB недоступен. Короче говоря, PyMongo не может подключиться ни к одному серверу.

Сначала я был очень сбит с толку тем, что они имели в виду под недоступным сервером MongoDB; в конце концов, я установил MongoEngine, верно?

Оказывается, MongoEngine и MongoDB — это разные вещи. Установка пакета не означает, что я также устанавливаю приложение базы данных. Чтобы решить внутреннюю ошибку сервера 500, мне пришлось установить MongoDB.

При дальнейшем рассмотрении выясняется, что в учебнике упоминалось, что установленная MongoDB является обязательным условием для работы над этим проектом! Как забавно, это моя нехватка чтения приводит к этой проблеме. На самом деле, если это так, то я должен рассматривать это не как ошибку, а скорее как человеческую ошибку.

Итак, чтобы решить эту проблему, просто скачайте MongoDB с их сайта. Поскольку я использую Windows (а не любую форму WSL), я буду устанавливать их установщик MSI. Также небольшое примечание: не устанавливайте Mongo Compass. Это приведет к сбою вашей установки, и вам нужно будет перезагрузить компьютер! Причина, по которой установка Mongo Compass приводит к сбою вашего компьютера, заключается в том, что они запускают скрытый скрипт в PowerShell, который необходимо включить заранее. Это дополнительная работа и ненужная.

Альтернативой Mongo Compass является Robo 3T, ранее известный как Robomongo. Однако для целей этого блога я не буду использовать графический интерфейс. Вместо этого я буду напрямую общаться с командной строкой.

Для этого сначала создайте новый каталог в C:\ следующим образом:

C:\> mkdir data/db

Это будет место, где ваша MongoDB будет хранить базу данных. Затем вручную получите доступ к MongoDB, используя следующий путь:

C:\Program Files\MongoDB\Server\4.2\bin

Здесь вы можете получить доступ к MongoDB, используя команду mongod. Это включит MongoDB. Наконец, при включенной MongoDB вы можете запустить python app.py в каталоге, в котором находится исходный код API. Запустите тестер API и наблюдайте за результатами!

Результат

Это довольно увлекательно, состояние потока доставило мне столько волнения и удовольствия от этого небольшого проекта. Поскольку я был взволнован, я сделал несколько скриншотов, чтобы показать — flex — результат моего рабочего API вместе с использованием MongoDB.

Кода

Сегодня был продуктивный день. Я научился направлять свое внутреннее состояние потока на работу над любимыми проектами. Кроме того, я рад сообщить, что стал немного терпимее к разочарованиям из-за конфигурации! Будем надеяться, что это начало хорошего приключения в мире разработки программного обеспечения!

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

Помните: будьте последовательны!