ДЗ
Go memcache loader.
### Материалы для выполнения домашнего задания:
[https://gitlab.com/otus.private/python-advanced-homeworks/-/tree/d0f98b6db1c1a56db217682a8e0286f473b81e33/go_memcache_loader](https://gitlab.com/otus.private/python-advanced-homeworks/-/tree/d0f98b6db1c1a56db217682a8e0286f473b81e33/go_memcache_loader)
*Задание*: нужно переделать однопоточную версию `memc_load.py` в более производительный вариант. Сам скрипт парсит и заливает в мемкеш поминутную выгрузку логов трекера установленных приложений. Ключом является тип и идентификатор устройства через двоеточие, значением является protobuf-сообщение.
Схематичный пример выгрузки логов можно посмотреть в файле `sample.tsv`. Но для генерации полноценных `tsv.gz` файлов с логами нужно запустить скрипт `gen_sample.py`:
```sh
# python gen_sample.py <путь сохранения файлов>
# например, для сохранения файлов в текущем каталоге
python gen_sample.py .
```
После того, как скрипт отработает, в каталоге появятся файлы:
```
$ ls -lh *.tsv.gz
-rw-r--r-- 1 s.stupnikov staff 255M 29 сен 12:09 20170929000000.tsv.gz
-rw-r--r-- 1 s.stupnikov staff 255M 29 сен 12:17 20170929000100.tsv.gz
-rw-r--r-- 1 s.stupnikov staff 255M 29 сен 12:25 20170929000200.tsv.gz
$ gunzip -c 20170929000000.tsv.gz | head -3
idfa e7e1a50c0ec2747ca56cd9e1558c0d7c 67.7835424444 -22.8044005471 7942,8519,4232,3032,4766,9283,5682,155,5779,2260,3624,1358,2432,1212,528,8182,9061,9628,2055,4821,3550,4964,6924,6737,3784,5428,6980,8137,2129,8751,3000,5495,5674,3023,818,2864,8250,768,6931,3493,3749,8053,8815,8448,8757,272,5951,2831,7186,157,1629,2021,3338,9020,6679,8679,1477,7488,3751,7399,8556,5500,5333,3873,7070,3018,2734,4273,3723,4528,4657,4014
idfa f5ae5fe6122bb20d08ff2c2ec43fb4c4 -104.68583244 -51.24448376 4877,7862,7181,6071,2107,2826,2293,3103,9433,2794,4303,7500,5637,8935,6772,2481,1614,3946,7013,690,9474,1655,9718,4862,3367,3869,4255,9431,7333,5471,3267,7439,7202,7310,7875,1468,8146,9617,4336,8747,7815
gaid 3261cf44cbe6a00839c574336fdf49f6 137.790839567 56.8403675248 7462,1115,5205,6700,865,5317,4967,2104,7993,6357,2385,8639,2306,5712,5326,9929,7781,1402,8830,1978,6443,3372,6379,5426,7847,8485,8983,1938,4809,2095,6887,2720,1074,1499,7165,4922,5969,6655,241,8738,1336,7334,465,4866,3402,634,9813,6343,2686,2214,7140,4818,92,1072,4784,2376,2086,5639,6314,9411,7888,8187,8766,7524,9002,3567,3563,360,8949,2780,8299,2460,1274,1474,3030,2221,3467,9094,9014,4475,4180,2205,481,7125,1237
```
Эти сгенерированные `tsv.gz` файлы и нужно передавать вашей программе на вход:
```
$ python memc_load.py --pattern=*.tsv.gz --dry
[2017.09.29 12:39:52] I Memc loader started with options: {'dry':True, 'log':None, 'pattern':'*.tsv.gz', 'idfa':'127.0.0.1:33013', 'dvid':'127.0.0.1:33016', 'test':False, 'adid':'127.0.0.1:33015', 'gaid':'127.0.0.1:33014'}
[2017.09.29 12:39:52] I Processing 20170929000000.tsv.gz
[2017.09.29 12:39:52] D 127.0.0.1:33013 - idfa:e7e1a50c0ec2747ca56cd9e1558c0d7c -> apps: 7942 apps: 8519 apps: 4232 apps: 3032 apps: 4766 apps: 9283 apps: 5682 apps: 155 apps: 5779 apps: 2260 apps: 3624 apps: 1358 apps: 2432 apps: 1212 apps: 528 apps: 8182 apps: 9061 apps: 9628 apps: 2055 apps: 4821 apps: 3550 apps: 4964 apps: 6924 apps: 6737 apps: 3784 apps: 5428 apps: 6980 apps: 8137 apps: 2129 apps: 8751 apps: 3000 apps: 5495 apps: 5674 apps: 3023 apps: 818 apps: 2864 apps: 8250 apps: 768 apps: 6931 apps: 3493 apps: 3749 apps: 8053 apps: 8815 apps: 8448 apps: 8757 apps: 272 apps: 5951 apps: 2831 apps: 7186 apps: 157 apps: 1629 apps: 2021 apps: 3338 apps: 9020 apps: 6679 apps: 8679 apps: 1477 apps: 7488 apps: 3751 apps: 7399 apps: 8556 apps: 5500 apps: 5333 apps: 3873 apps: 7070 apps: 3018 apps: 2734 apps: 4273 apps: 3723 apps: 4528 apps: 4657 apps: 4014 lat: 67.7835424444 lon: -22.8044005471
[2017.09.29 12:39:52] D 127.0.0.1:33013 - idfa:f5ae5fe6122bb20d08ff2c2ec43fb4c4 -> apps: 4877 apps: 7862 apps: 7181 apps: 6071 apps: 2107 apps: 2826 apps: 2293 apps: 3103 apps: 9433 apps: 2794 apps: 4303 apps: 7500 apps: 5637 apps: 8935 apps: 6772 apps: 2481 apps: 1614 apps: 3946 apps: 7013 apps: 690 apps: 9474 apps: 1655 apps: 9718 apps: 4862 apps: 3367 apps: 3869 apps: 4255 apps: 9431 apps: 7333 apps: 5471 apps: 3267 apps: 7439 apps: 7202 apps: 7310 apps: 7875 apps: 1468 apps: 8146 apps: 9617 apps: 4336 apps: 8747 apps: 7815 lat: -104.68583244 lon: -51.24448376
[2017.09.29 12:39:52] D 127.0.0.1:33014 - gaid:3261cf44cbe6a00839c574336fdf49f6 -> apps: 7462 apps: 1115 apps: 5205 apps: 6700 apps: 865 apps: 5317 apps: 4967 apps: 2104 apps: 7993 apps: 6357 apps: 2385 apps: 8639 apps: 2306 apps: 5712 apps: 5326 apps: 9929 apps: 7781 apps: 1402 apps: 8830 apps: 1978 apps: 6443 apps: 3372 apps: 6379 apps: 5426 apps: 7847 apps: 8485 apps: 8983 apps: 1938 apps: 4809 apps: 2095 apps: 6887 apps: 2720 apps: 1074 apps: 1499 apps: 7165 apps: 4922 apps: 5969 apps: 6655 apps: 241 apps: 8738 apps: 1336 apps: 7334 apps: 465 apps: 4866 apps: 3402 apps: 634 apps: 9813 apps: 6343 apps: 2686 apps: 2214 apps: 7140 apps: 4818 apps: 92 apps: 1072 apps: 4784 apps: 2376 apps: 2086 apps: 5639 apps: 6314 apps: 9411 apps: 7888 apps: 8187 apps: 8766 apps: 7524 apps: 9002 apps: 3567 apps: 3563 apps: 360 apps: 8949 apps: 2780 apps: 8299 apps: 2460 apps: 1274 apps: 1474 apps: 3030 apps: 2221 apps: 3467 apps: 9094 apps: 9014 apps: 4475 apps: 4180 apps: 2205 apps: 481 apps: 7125 apps: 1237 lat: 137.790839567 lon: 56.8403675248
```
Важно обрабатывать файлики в хронологическом порядке. В данном случае под этим имеется в виду, что после обработки нужно переименовывать файл, префиксировав имя точкой, последовательно и хронологически. Заливать же можно параллельно.
## Deadline
Задание нужно сдать через неделю. То есть ДЗ, выданное в понедельник, нужно сдать до следующего занятия в понедельник. Код, отправленный на ревью в это время, рассматривается в первом приоритете. Нарушение дедлайна (пока) не карается, пытаться сдать ДЗ можно до конца курса. Но код, отправленный с опозданием, когда по плану предполагается работа над более актуальным ДЗ, будет рассматриваться в более низком приоритете без гарантий по высокой скорости проверки.
## Обратная связь
Cтудент коммитит все необходимое в свой github/gitlab репозитарий. Далее необходимо зайти в ЛК, найти занятие, ДЗ по которому выполнялось, нажать “Чат с преподавателем” и отправить ссылку. После этого ревью и общение на тему ДЗ будет происходить в рамках этого чата.