Skip to content

Сервис (EDI) для обработки файлов с данными о телефонных звонках и предоставление данных по ним через Web в формате JSON

Notifications You must be signed in to change notification settings

python-vlad/intexsoft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Есть папка. В папке постепенно появляются JSON файлы. В файле объект звонка со следующими полями: номер того, кто звонил (строка), номер того, кому звонили (строка), время начала звонка (Unix timestamp), время окончания звонка (Unix timestamp), тип связи (строка, одно из (GSM, CDMA, LTE)). Есть БД. Две сущности: тарифный план и звонок. Тарифный план состоит из следующих атрибутов: тип связи и цена за минуту разговора (в неделимых единицах, например, в копейках, может быть просто целым положительным числом). Звонок состоит из следующих атрибутов: номер того, кто звонил, номер того, кому звонили, время начала звонка, время окончания звонка, стоимость звонка. Задача: написать сервис (EDI), который следит за тем, как появляются файлы звонков в каталоге. Как только появляется файл со звонком, он его читает, парсит, считает стоимость для соответствующего типа связи и записывает в базу и, если все ок с записью, файл удаляет. Помимо этого есть простой REST API с одним методом: GET /call с параметром number который возвращает все звонки (2 номера, время начала/конца, стоимость), в которых участвовал номер из параметра (то есть и входящие, и исходящие). Данные брать из БД. Формат данных: JSON Техонологии: python 3, любая реляционная СУБД (например, MySQL), API на последнем flask (1.1.x)

Инструкция:

  1. Создаем базу данных в MySQL и заполняем настройки для подключения к ней в файле config.py
  2. Запускаем create_db.py для создания базы данных, таблиц и заполнения начальных данных
  3. Запускаем в первом терминале: celery -A celery_worker beat -l debug
  4. Запускаем во втором терминале: celery worker -A celery_worker -l info
  5. Как только в каталоге files появятся файлы - они обработаются в течение 30 секунд
  6. Если отправить GET-запрос к адресу: http://localhost:8080/api/call?number=375259552233, то мы получим массив данных (JSON), которые включают в себя указанный в запросе номер телефона

Для работы требуется:

  1. MySQL=8.0.18, RabbitMQ=3.7.8
  2. flask=1.1.1, flask-SQLAlchemy=2.4.1, PyMySQL=0.9.3, celery=4.4.0, amqp=2.5.2

About

Сервис (EDI) для обработки файлов с данными о телефонных звонках и предоставление данных по ним через Web в формате JSON

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages