/hiring

Primary LanguagePython

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

Необходимо реализовать механизм взаимодействия с псевдо-API отправки писем. Письма поступают в формате XML (см. файл sample.xml). Считается всегда, что формат одинаков и данные полей валидны. Отправка осуществляется запуском сценария sender.py, единственный аргумент - абсолютный пусть до файла писем. Пример запуска:

python sender.py /path/to/file.xml

Описание API

  • адрес http://test.webjet.pro/api.php
  • тип запроса POST
  • параметры запроса:
    • id: формат значения целое число
    • message формат значения JSON {"to":"...","subject":"..."}
  • ответы API (HTTP status code):
    • 200 - письмо было успешно обработано, статус доставки будет отражен в теле ответа
      • 0 - письмо не доставлено
      • 1 - письмо доставлено
    • 503 - сервис занят, необходимо повторить запрос позднее
    • 400 - некорректный запрос (ошибка будет отражена в теле ответа)

Результаты отправки необходимо записывать в БД:

    unix-socket /var/run/mysqld/mysqld.sock
    username    u1
    password    984hfwGTw2Fqs22q
    database    sender
    table       results

Описание таблицы результатов:

CREATE TABLE `results` (
    `id`                INT(11) UNSIGNED    NOT NULL                    COMMENT 'Идентификатор письма',
    `ts`                TIMESTAMP           NULL        DEFAULT NULL    COMMENT 'Время отправки письма',
    `delivery_status`   TINYINT(1) UNSIGNED NULL        DEFAULT NULL    COMMENT 'Статус доставки (0|1)',
    PRIMARY KEY (`id`)
)
ENGINE=InnoDB

ВАРИАЦИЯ РЕАЛИЗАЦИИ

Вместо MySQL можно воспользоваться MongoDB Опишите какие особености реализации искомой задачи проявятся при реализации?

ДОПОЛНИТЕЛЬНЫЙ ВОПРОС

Какие шаги необходимо предпринять, если говорить о параллельном запуске нескольких сценариев (данные в файлах писем для разных запусков могут пересекаться)?