python в ядре Яндекс.Диска
DESCRIPTION
Я расскажу о том, как мы используем Python в Яндекс.Диске, какие применяем библиотеки и фреймворки, какие задачи решаем и с какими проблемами сталкиваемся. Также затрону тему логирования и обработки асинхронных операций.TRANSCRIPT
![Page 1: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/1.jpg)
![Page 2: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/2.jpg)
Яндекс.Диск: Использование Python
Иващенко Сергей, Яндекс
![Page 3: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/3.jpg)
![Page 4: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/4.jpg)
![Page 5: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/5.jpg)
![Page 6: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/6.jpg)
![Page 7: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/7.jpg)
![Page 8: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/8.jpg)
![Page 9: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/9.jpg)
Архитектура Яндекс.Диска
![Page 10: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/10.jpg)
Архитектура Яндекс.Диска
MPFS
![Page 11: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/11.jpg)
Архитектура Яндекс.Диска
MPFS
WebDAV Веб интерфейс REST API
![Page 12: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/12.jpg)
Архитектура Яндекс.Диска
MPFS
WebDAV Веб интерфейс REST API
Кладун
Заберун
![Page 13: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/13.jpg)
Архитектура Яндекс.Диска
MPFS
WebDAV Веб интерфейс REST API
Кладун
Заберун
Mulca
![Page 14: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/14.jpg)
Архитектура Яндекс.Диска
MPFS
WebDAV Веб интерфейс REST API
Кладун
Заберун
MongoDB
Mulca
![Page 15: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/15.jpg)
Архитектура Яндекс.Диска
MPFS
WebDAV Веб интерфейс REST API
Кладун
Заберун
Почта
Фотки
Музыка
MongoDB
Mulca
![Page 16: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/16.jpg)
Проблемы?
![Page 17: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/17.jpg)
Проблема 1. На каком языке писать?
![Page 18: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/18.jpg)
Почему Python?
![Page 19: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/19.jpg)
• Скорость разработки
![Page 20: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/20.jpg)
• Скорость разработки• Распространённость
![Page 21: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/21.jpg)
Проблема 2. Какие технологии использовать?
![Page 22: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/22.jpg)
Что в основе?
![Page 23: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/23.jpg)
Что в основе?
![Page 24: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/24.jpg)
Что в основе?
![Page 25: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/25.jpg)
Проблема 3В системе есть длительные задачи, их можно выполнять асинхронно. Как это
сделать?
![Page 26: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/26.jpg)
Асинхронные задачи
![Page 27: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/27.jpg)
Асинхронные задачи
• Operations – для сложных составных задач
![Page 28: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/28.jpg)
Асинхронные задачи
• Operations – для сложных составных задач
Queue – для небольших атомарных задач
![Page 29: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/29.jpg)
![Page 30: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/30.jpg)
![Page 31: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/31.jpg)
![Page 32: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/32.jpg)
![Page 33: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/33.jpg)
![Page 34: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/34.jpg)
![Page 35: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/35.jpg)
![Page 36: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/36.jpg)
Проблема 4. Как понять что происходит?
![Page 37: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/37.jpg)
ЛОГИ!!
![Page 38: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/38.jpg)
Как мы логируем
![Page 39: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/39.jpg)
![Page 40: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/40.jpg)
• > 50 разных логов
• 700 ГБ в сутки
![Page 41: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/41.jpg)
2014-07-10 19:53:41,563 [30180] web-111-ufodev 30180_10104 __init__ GET /json/status?oid=111&uid=222 HTTP/1.1 200 0.0262014-07-10 19:53:12,007 [30182] mac-JTWz_1_LXK-1-webdav 30182_10618 __init__ GET /json/info?uid=0&path=/disk/photo.png HTTP/1.1 200 0.045
![Page 42: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/42.jpg)
__slots__
![Page 43: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/43.jpg)
Slice
![Page 44: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/44.jpg)
Slice
![Page 45: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/45.jpg)
Slice
![Page 46: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/46.jpg)
Slice
a[start:stop:step]
![Page 47: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/47.jpg)
Pyrasite
$ pyrasite-shell 26234Pyrasite Shell 2.0 Connected to 'python' Python 2.7.3 (default, Aug 9 2012, 17:23:57) [GCC 4.7.1 20120720 (Red Hat 4.7.1-5)] on linux2 Type "help", "copyright", "credits" or "license" for more information. (DistantInteractiveConsole) >>>
![Page 48: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/48.jpg)
• Python – хороший язык, позволяющий быстро разрабатывать сложные сервисы
• При выборе готовых решений всегда помните о целях• Каждому инструменту – свою задачу
Выводы
![Page 49: Python в ядре Яндекс.Диска](https://reader035.vdocuments.mx/reader035/viewer/2022062220/554e7894b4c90545698b4e2e/html5/thumbnails/49.jpg)
Disk API
•
http://api.yandex.ru/disk/
• RESTful API• WebDAV API + SDK (iOS, Android, WP)