Giter Site home page Giter Site logo

admission-test's Introduction

Тестовое задание

Тестовое задание по передаче файлов на FTP сервер согласно конфигурационным файлам с использованием многопроцессности и ООП подхода на языке Python.

Автор: Мясников Роман

Email: [email protected]

Использование

Что бы использовать программу, необходимо в рабочей папке вместе с файлом "main.py" создать папки: "files", "checked". Программа ожидает появление конфигурационных файлов формата json в папке "files" и после чтения переносит их в папку "checked".

Что бы запустить тест на передачу 10 файлов раскомментируйте две строчки в начале исполнения кода и измените параметры в шаблоне для вашего FTP сервера.

Максимальное количество единовременных покдючений ограничивается глобальной переменной MAX_CONNECTIONS

Структура конфигурационного файла

[{
    "server": {
        "host": "192.168.0.104",
        "port": "2121",
        "login": "admin",
        "password": "1234"
    },
    "file": {
        "local_path": "D:/Exemple/of/path/file.dwg",
        "server_path": "LocalPath/subfolder1"
    }
}, {

... 

}]

Как это работает

В начале исполнения программы создаётся основной поток класса JsonChecker для проверки наличия конфиг файлов в папке "files" и вызове нового потока для обработки файла и передачи соответствующего файла.

При поступлении конфиг файла запускается поток класса FileTransfer который читает данные из конфиг файла, устанавливает соединение с сервером, загружает нужный файл на сервер, создаёт необходимые директории.

Недостатки и проблемы

  • Множественные тесты не привели к решению обработки ошибок возникающих при неожиданном разрыве соединения с ftp сервером. При этом основной поток продолжит работу в ожидании конфиг файлов.

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

  • Допущения: считается, что все поля конфиг файла заполнены корректно, но необязательно приведут к подключению.

admission-test's People

Contributors

chyvak357 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.