Как всегда, сегодня хороший день для кодинга! В этом сообщении в блоге я расскажу о своем опыте проверки своих знаний о языке программирования 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.
Кода
Сегодня был продуктивный день. Я научился направлять свое внутреннее состояние потока на работу над любимыми проектами. Кроме того, я рад сообщить, что стал немного терпимее к разочарованиям из-за конфигурации! Будем надеяться, что это начало хорошего приключения в мире разработки программного обеспечения!
Кроме того, если вы хотите узнать больше о том, как направить состояние внутреннего потока для достижения максимальной продуктивности, я настоятельно рекомендую вам прочитать этот пост.
Помните: будьте последовательны!