21
РАЗРАБОТКА ВЫСОКОНАГРУЖЕННОГО КЛИЕНТА ДЛЯ API Иванков Михаил Product Director & CTO Plarin

Mail.ru АПИшник - Разработка высоконагруженного клиента для API

Embed Size (px)

Citation preview

1. API Product Director & CTOPlarin 2. 10,0009,0008,0007,0006,0005,0004,0003,0002,0001,00001 2 3 4 5 , :4,4 . 4 . 3. 60,00050,00040,00030,00020,00010,00001 2 3 4 5 , :30 . 17,5 . 4. 3,0002,5002,0001,5001,00050001 3 5 7 9 11 13 15 17 19 21 23 25 27 29 , :320 860 5. RPS (RPS): 29/. : 1 740 : 104 400 24 : 2 505 600 : 0.4% : 0.009% (90 1 .) 6. 400 Client Error: BAD REQUEST429 Client Error: TOO MANY REQUESTS500 Server Error: INTERNAL SERVER ERROR403 Client Error: FORBIDDEN409 Client Error: CONFLICT , . 7. :resp: {'error_description': 'Access denied'}resp: {'error_description': "[{u'text': u'Value length more then 90'}]"}resp: {'error_description': "[{u'url': u'Bad redirect url'}]"}resp: {'error_description': 'Cant change archived campaign'}resp: {'error_description': 'Object not found'}resp: {'error_description': u'Use OAuth2 for access to API v2'} 8. 1 api: POST, /api/v1/campaigns/xxxxxx/banners.json post_data: [{"status": "active", "text": " !", "image": {"url":"http://r.mail.ru/img/XXXX.jpg", "preview_url":"https://r.mradx.net/img/XXXXX.jpg", "height": 75, "width": 90,"is_animated": false, "type": "static", "id": xxxxxxx, "size": 20984}, "url":"http://ya.ru", "title": " } 'error_description' {'text': "String has restricted chars: 'xad'} xad - ? 9. 1 api: POST, /api/v1/campaigns/xxxxxx/banners.json post_data: [{"status": "active", "text": " !", "image": {"url":"http://r.mail.ru/img/XXXX.jpg", "preview_url":"https://r.mradx.net/img/XXXXX.jpg", "height": 75, "width": 90,"is_animated": false, "type": "static", "id": xxxxxxx, "size": 20984}, "url":"http://ya.ru", "title": " } 'error_description' {'text': "String has restricted chars: 'xad'} xad - ? 10. 1 api: POST, /api/v1/campaigns/xxxxxx/banners.json post_data: [{"status": "active", "text": " !", "image": {"url":"http://r.mail.ru/img/XXXX.jpg", "preview_url":"https://r.mradx.net/img/XXXXX.jpg", "height": 75, "width": 90,"is_animated": false, "type": "static", "id": xxxxxxx, "size": 20984}, "url":"http://ya.ru", "title": " } 'error_description' {'text': "String has restricted chars: 'xad'} xad - ! 11. 2 api: POST, /api/v1/campaigns/xxxxxxx/banners.json HTTPError: 400 Client Error: BAD REQUEST resp: {'error_description': u"descriptor 'strftime' requires a'datetime.date' object but received a 'NoneType'"} 12. 3 headers: {'Authorization': 'AuthHMAC XXXXXXXXXXX:XXXXXXXXXXXXX=', 'Content-Length': 0, 'Content-Type': 'application/json'} api: GET,/api/v1/campaigns/XXXXXXXX.json?fields=id%2Cstatus%2Csystem_status%2Ccreated%2Cupdated%2Cname%2Cdate_start%2Cdate_end%2Cpackage%2Cprice_per_show%2Cprice_per_click%2Cbudget_limit_day%2Cbudget_limit%2Cmixing%2Cextended_age%2Cextended_pads%2Ctargetings%2Cbanners_count%2Cgamers%2Cgroup_members%2Cautobidding_mode%2Cappend_utm%2Clast_updated%2Cage_restrictions%2Cstats%2Cstats_today%2Cstats_yesterday%2Clast_stats_updated error: 500 Server Error: INTERNAL SERVER ERROR resp_headers: {'transfer-encoding': 'chunked', 'vary': 'Cookie', 'server':'nginx/1.7.5', 'connection': 'keep-alive', 'x-http-log-ids':'b89e91ad040b46e7a4b4df2c295723d6-1', 'date': 'Thu, 27 Nov 2014 12:06:30GMT', 'content-type': 'application/json'} resp: {'error_description': u'Unexpected API error'} 13. 3 headers: {'Authorization': 'AuthHMAC XXXXXXXXXXX:XXXXXXXXXXXXX=', 'Content-Length': 0, 'Content-Type': 'application/json'} api: GET,/api/v1/campaigns/XXXXXXXX.json?fields=id%2Cstatus%2Csystem_status%2Ccreated%2Cupdated%2Cname%2Cdate_start%2Cdate_end%2Cpackage%2Cprice_per_show%2Cprice_per_click%2Cbudget_limit_day%2Cbudget_limit%2Cmixing%2Cextended_age%2Cextended_pads%2Ctargetings%2Cbanners_count%2Cgamers%2Cgroup_members%2Cautobidding_mode%2Cappend_utm%2Clast_updated%2Cage_restrictions%2Cstats%2Cstats_today%2Cstats_yesterday%2Clast_stats_updated error: 500 Server Error: INTERNAL SERVER ERROR resp_headers: {'transfer-encoding': 'chunked', 'vary': 'Cookie', 'server':'nginx/1.7.5', 'connection': 'keep-alive', 'x-http-log-ids':'b89e91ad040b46e7a4b4df2c295723d6-1', 'date': 'Thu, 27 Nov 2014 12:06:30GMT', 'content-type': 'application/json'} resp: {'error_description': u'Unexpected API error'} 14. 4 api: POST, /api/v1/projection.json post_data: {"user": {"id": xxxxxx}, "id": xxxxxxx, "targetings":{"interests": [], "regions": [191], "user_geo": {}, "mobile_vendors":[], "age": [42, 43, 44], "sex": "F", "hours": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "pads":[{"id": 6081}, {"id": 6203}], "mobile_operation_systems": [],"mobile_types": ["smartphones"], "custom": {"income_group": []},"mobile_operators": []}, "package": {"id": 117}} error: 504 Server Error: Gateway Time-out projection.json remarketings.json 15. - REBOOT - !- .- , .- . , ! 16. - THROTTLING.JSON"STATISTICS": {"READ": { "remaining": { "1": 2, "3600": 1500 }, "limits": { "1": 2, "3600": 1500}}},"BANNER": {"CREATE": { "remaining": { "3600": 360 }, "limits": { "3600": 360 } },"UPDATE": { "remaining": { "3600": 400 }, "limits": { "3600": 400 } }},"PROJECTION": {"READ": { "remaining": { "1": 2 }, "limits": { "1": 2 } }},"CAMPAIGN": {"CREATE": { "remaining": { "3600": 180 }, "limits": { "3600": 180 } },"UPDATE": { "remaining": { "3600": 400 }, "limits": { "3600": 400 } }} 17. GET, /api/v1/urls/?url= . Packages.json . Projection.json 18. PROJECTION.JSON{ "campaign_id":xxxxxxxxx, "days":7, "offpoints_histogramm":[], "histogramm":[ { "recommended_cpm":0.6, "uniqs":0, "share":0, "price_per_show":0.6, "price_per_click":0.07, "interpolation":"linear" }, { "recommended_cpm":0.8, "uniqs":0, "share":0, "price_per_show":0.8,"price_per_click":0.1, "interpolation":"linear" }, { "recommended_cpm":1, "uniqs":0, "share":0, "price_per_show":1, "price_per_click":0.12, "interpolation":"linear" }, { "recommended_cpm":1.2, "uniqs":0, "share":0, "price_per_show":1.2, "price_per_click":0.15, "interpolation":"linear" },{ "recommended_cpm":1.4, "uniqs":0, "share":0, "price_per_show":1.4, "price_per_click":0.17, "interpolation":"linear" }, { "recommended_cpm":1.6, "uniqs":0, "share":0, "price_per_show":1.6, "price_per_click":0.2, "interpolation":"linear" }, { "recommended_cpm":1.8, "uniqs":0,"share":0, "price_per_show":1.8, "price_per_click":0.22, "interpolation":"linear" }, { "recommended_cpm":2, "uniqs":0, "share":0, "price_per_show":2, "price_per_click":0.25, "interpolation":"linear" }, { "recommended_cpm":2.2, "uniqs":0, "share":0, "price_per_show":2.2,"price_per_click":0.27, "interpolation":"linear" }, { "recommended_cpm":2.4, "uniqs":0, "share":0, "price_per_show":2.4, "price_per_click":0.29, "interpolation":"linear" }, { "recommended_cpm":2.6, "uniqs":0, "share":0, "price_per_show":2.6, "price_per_click":0.32,"interpolation":"linear" }, { "recommended_cpm":4, "uniqs":0, "share":0, "price_per_show":4, "price_per_click":0.49, "interpolation":"linear" }, { "recommended_cpm":4.2, "uniqs":0, "share":0, "price_per_show":4.2, "price_per_click":0.51, "interpolation":"linear" }, {"recommended_cpm":4.4, "uniqs":0, "share":0, "price_per_show":4.4, "price_per_click":0.54, "interpolation":"linear" }, { "recommended_cpm":4, "uniqs":0, "share":0, "price_per_show":4, "price_per_click":0.49, "interpolation":"linear" }, { "recommended_cpm":4, "uniqs":0, "share":0,"price_per_show":4, "price_per_click":0.49, "interpolation":"linear" }, { "recommended_cpm":4.2, "uniqs":0, "share":0, "price_per_show":4.2, "price_per_click":0.51, "interpolation":"linear" }, { "recommended_cpm":4, "uniqs":0, "share":0, "price_per_show":4, "price_per_click":0.49,"interpolation":"linear" }, { "recommended_cpm":4.2, "uniqs":0, "share":0, "price_per_show":4.2, "price_per_click":0.51, "interpolation":"linear" }, { "recommended_cpm":4.4, "uniqs":0, "share":0, "price_per_show":4.4, "price_per_click":0.54, "interpolation":"linear" }, {"recommended_cpm":4.6, "uniqs":0, "share":0, "price_per_show":4.6, "price_per_click":0.56, "interpolation":"linear" }, { "recommended_cpm":4.8, "uniqs":0, "share":0, "price_per_show":4.8, "price_per_click":0.59, "interpolation":"linear" }, { "recommended_cpm":5, "uniqs":0,"share":0, "price_per_show":5, "price_per_click":0.61, "interpolation":"linear" }, { "recommended_cpm":5.2, "uniqs":0, "share":0, "price_per_show":5.2, "price_per_click":0.64, "interpolation":"linear" }, { "recommended_cpm":5.4, "uniqs":0, "share":0, "price_per_show":5.4,"price_per_click":0.66, "interpolation":"linear" }, { "recommended_cpm":5.6, "uniqs":0, "share":0, "price_per_show":5.6, "price_per_click":0.69, "interpolation":"linear" }, { "recommended_cpm":5.8, "uniqs":0, "share":0, "price_per_show":5.8, "price_per_click":0.71,"interpolation":"linear" }, { "recommended_cpm":6, "uniqs":0, "share":0, "price_per_show":6, "price_per_click":0.74, "interpolation":"linear" }, { "recommended_cpm":6.2, "uniqs":0, "share":0, "price_per_show":6.2, "price_per_click":0.76, "interpolation":"linear" }, {"recommended_cpm":6.4, "uniqs":0, "share":0, "price_per_show":6.4, "price_per_click":0.78, "interpolation":"linear" }, { "recommended_cpm":6.6, "uniqs":0, "share":0, "price_per_show":6.6, "price_per_click":0.81, "interpolation":"linear" }, { "recommended_cpm":6.8, "uniqs":0,"share":0, "price_per_show":6.8, "price_per_click":0.83, "interpolation":"linear" }, { "recommended_cpm":7, "uniqs":0, "share":0, "price_per_show":7, "price_per_click":0.86, "interpolation":"linear" }, { "recommended_cpm":7.2, "uniqs":0, "share":0, "price_per_show":7.2,"price_per_click":0.88, "interpolation":"linear" }, { "recommended_cpm":7.4, "uniqs":0, "share":0, "price_per_show":7.4, "price_per_click":0.91, "interpolation":"linear" }, { "recommended_cpm":7.6, "uniqs":0, "share":0, "price_per_show":7.6, "price_per_click":0.93,"interpolation":"linear" }, { "recommended_cpm":7.8, "uniqs":0, "share":0, "price_per_show":7.8, "price_per_click":0.96, "interpolation":"linear" }, { "recommended_cpm":8, "uniqs":0, "share":0, "price_per_show":8, "price_per_click":0.98, "interpolation":"linear" }, {"recommended_cpm":8.2, "uniqs":0, "share":0, "price_per_show":8.2, "price_per_click":1, "interpolation":"linear" }, { "recommended_cpm":8.4, "uniqs":0, "share":0, "price_per_show":8.4, "price_per_click":1.03, "interpolation":"linear" }, { "recommended_cpm":8.6, "uniqs":0,"share":0, "price_per_show":8.6, "price_per_click":1.05, "interpolation":"linear" }, { "recommended_cpm":8.8, "uniqs":0, "share":0, "price_per_show":8.8, "price_per_click":1.08, "interpolation":"linear" }, { "recommended_cpm":9, "uniqs":0, "share":0, "price_per_show":9,"price_per_click":1.1, "interpolation":"linear" }, { "recommended_cpm":9.2, "uniqs":0, "share":0, "price_per_show":9.2, "price_per_click":1.13, "interpolation":"linear" }, { "recommended_cpm":9.4, "uniqs":0, "share":0, "price_per_show":9.4, "price_per_click":1.15,"interpolation":"linear" }, { "recommended_cpm":9.6, "uniqs":0, "share":0, "price_per_show":9.6, "price_per_click":1.18, "interpolation":"linear" }, { "recommended_cpm":9.8, "uniqs":0, "share":0, "price_per_show":9.8, "price_per_click":1.2, "interpolation":"linear" }, {"recommended_cpm":10, "uniqs":0, "share":0, "price_per_show":10, "price_per_click":1.23, "interpolation":"linear" }, { "recommended_cpm":10.2, "uniqs":0, "share":0, "price_per_show":10.2, "price_per_click":1.25, "interpolation":"linear" }, { "recommended_cpm":10.4, "uniqs":0,"share":0, "price_per_show":10.4, "price_per_click":1.27, "interpolation":"linear" }, { "recommended_cpm":10.6, "uniqs":0, "share":0, "price_per_show":10.6, "price_per_click":1.3, "interpolation":"linear" }, { "recommended_cpm":73, "uniqs":31469.400267914403, "share":93,"price_per_show":73, "price_per_click":8.94, "interpolation":"linear" }, { "recommended_cpm":73.2, "uniqs":31477.06700629711, "share":93, "price_per_show":73.2, "price_per_click":8.97, "interpolation":"linear" }, { "recommended_cpm":73.4, "uniqs":31485.28165838858,"share":93, "price_per_show":73.4, "price_per_click":8.99, "interpolation":"linear" }, { "recommended_cpm":73.6, "uniqs":31493.513189993297, "share":93, "price_per_show":73.6, "price_per_click":9.02, "interpolation":"linear" }, { "recommended_cpm":73.8,"uniqs":31501.25320941624, "share":93, "price_per_show":73.8, "price_per_click":9.04, "interpolation":"linear" }, { "recommended_cpm":74, "uniqs":31509.119461803053, "share":93, "price_per_show":74, "price_per_click":9.07, "interpolation":"linear" }, {"recommended_cpm":74.2, "uniqs":31516.91653787054, "share":93, "price_per_show":74.2, "price_per_click":9.09, "interpolation":"linear" }, { "recommended_cpm":74.4, "uniqs":31524.805054018005, "share":93, "price_per_show":74.4, "price_per_click":9.12,"interpolation":"linear" }, { "recommended_cpm":74.6, "uniqs":31532.403690883642, "share":93, "price_per_show":74.6, "price_per_click":9.14, "interpolation":"linear" }, { "recommended_cpm":74.8, "uniqs":31540.402051819874, "share":93, "price_per_show":74.8,"price_per_click":9.16, "interpolation":"linear" }, { "recommended_cpm":75, "uniqs":31548.352056891585, "share":93, "price_per_show":75, "price_per_click":9.19, "interpolation":"linear" }, { "recommended_cpm":75.2, "uniqs":31556.31273833221, "share":93,"price_per_show":75.2, "price_per_click":9.21, "interpolation":"linear" }, { "recommended_cpm":75.4, "uniqs":31564.12137108282, "share":93, "price_per_show":75.4, "price_per_click":9.24, "interpolation":"linear" }, { "recommended_cpm":75.6, "uniqs":31571.225261123764,"share":93, "price_per_show":75.6, "price_per_click":9.26, "interpolation":"linear" }, { "recommended_cpm":75.8, "uniqs":31578.695546129704, "share":93, "price_per_show":75.8, "price_per_click":9.29, "interpolation":"linear" }, { "recommended_cpm":76,"uniqs":31586.825094356303, "share":93, "price_per_show":76, "price_per_click":9.31, "interpolation":"linear" }, { "recommended_cpm":76.2, "uniqs":31594.530331131573, "share":93, "price_per_show":76.2, "price_per_click":9.34, "interpolation":"linear" }, {"recommended_cpm":76.4, "uniqs":31601.51985197813, "share":93, "price_per_show":76.4, "price_per_click":9.36, "interpolation":"linear" }, { "recommended_cpm":76.6, "uniqs":31608.708661632125, "share":93, "price_per_show":76.6, "price_per_click":9.38,"interpolation":"linear" }, { "recommended_cpm":76.8, "uniqs":31616.20616472522, "share":93, "price_per_show":76.8, "price_per_click":9.41, "interpolation":"linear" }, { "recommended_cpm":77, "uniqs":31622.94119287413, "share":93, "price_per_show":77, "price_per_click":9.43,"interpolation":"linear" }, { "recommended_cpm":77.2, "uniqs":31629.130999437988, "share":93, "price_per_show":77.2, "price_per_click":9.46, "interpolation":"linear" }, { "recommended_cpm":77.4, "uniqs":31635.713108818883, "share":93, "price_per_show":77.4,"price_per_click":9.48, "interpolation":"linear" }, { "recommended_cpm":77.6, "uniqs":31642.42491100323, "share":93, "price_per_show":77.6, "price_per_click":9.51, "interpolation":"linear" }, { "recommended_cpm":77.8, "uniqs":31648.468923202494, "share":93,"price_per_show":77.8, "price_per_click":9.53, "interpolation":"linear" }, { "recommended_cpm":78, "uniqs":31655.078363268887, "share":93, "price_per_show":78, "price_per_click":9.56, "interpolation":"linear" }, { "recommended_cpm":78.2, "uniqs":31661.441458662215,"share":93, "price_per_show":78.2, "price_per_click":9.58, "interpolation":"linear" }, { "recommended_cpm":78.4, "uniqs":31667.97522241481, "share":93, "price_per_show":78.4, "price_per_click":9.61, "interpolation":"linear" }, { "recommended_cpm":78.6,"uniqs":31675.53118451347, "share":93, "price_per_show":78.6, "price_per_click":9.63, "interpolation":"linear" }, { "recommended_cpm":78.8, "uniqs":31682.045304975632, "share":93, "price_per_show":78.8, "price_per_click":9.65, "interpolation":"linear" }, {"recommended_cpm":79, "uniqs":31688.178761193554, "share":93, "price_per_show":79, "price_per_click":9.68, "interpolation":"linear" }, { "recommended_cpm":79.2, "uniqs":31694.715954077103, "share":93, "price_per_show":79.2, "price_per_click":9.7, "interpolation":"linear" },{ "recommended_cpm":79.4, "uniqs":31701.179538361623, "share":93, "price_per_show":79.4, "price_per_click":9.73, "interpolation":"linear" }, { "recommended_cpm":79.6, "uniqs":31707.572380186437, "share":93, "price_per_show":79.6, "price_per_click":9.75,"interpolation":"linear" }, { "recommended_cpm":79.8, "uniqs":31715.160473753924, "share":93, "price_per_show":79.8, "price_per_click":9.78, "interpolation":"linear" }, { "recommended_cpm":80, "uniqs":31718.612810197414, "share":93, "price_per_show":80,"price_per_click":9.8, "interpolation":"linear" }, { "recommended_cpm":80.2, "uniqs":31722.934098660193, "share":93, "price_per_show":80.2, "price_per_click":9.83, "interpolation":"linear" }, { "recommended_cpm":80.4, "uniqs":31727.646707263684, "share":93,"price_per_show":80.4, "price_per_click":9.85, "interpolation":"linear" }, { "recommended_cpm":80.6, "uniqs":31733.13408450174, "share":93, "price_per_show":80.6, "price_per_click":9.88, "interpolation":"linear" }, { "recommended_cpm":80.8, "uniqs":31737.672298764883,"share":93, "price_per_show":80.8, "price_per_click":9.9, "interpolation":"linear" }, { "recommended_cpm":81, "uniqs":31742.36679950971, "share":94, "price_per_show":81, "price_per_click":9.92, "interpolation":"linear" }, { "recommended_cpm":81.2, "uniqs":31746.938977523576,"share":94, "price_per_show":81.2, "price_per_click":9.95, "interpolation":"linear" }, { "recommended_cpm":81.4, "uniqs":31751.84810092112, "share":94, "price_per_show":81.4, "price_per_click":9.97, "interpolation":"linear" }, { "recommended_cpm":81.6,"uniqs":31756.966943825908, "share":94, "price_per_show":81.6, "price_per_click":10, "interpolation":"linear" }, { "recommended_cpm":81.8, "uniqs":31761.675693377565, "share":94, "price_per_show":81.8, "price_per_click":10.02, "interpolation":"linear" }, {"recommended_cpm":82, "uniqs":31765.980153508142, "share":94, "price_per_show":82, "price_per_click":10.05, "interpolation":"linear" }, { "recommended_cpm":82.2, "uniqs":31771.061153137933, "share":94, "price_per_show":82.2, "price_per_click":10.07,"interpolation":"linear" }, { "recommended_cpm":82.4, "uniqs":31777.59971767386, "share":94, "price_per_show":82.4, "price_per_click":10.1, "interpolation":"linear" }, { "recommended_cpm":82.6, "uniqs":31784.219230172657, "share":94, "price_per_show":82.6,"price_per_click":10.12, "interpolation":"linear" }, { "recommended_cpm":82.8, "uniqs":31789.52150599282, "share":94, "price_per_show":82.8, "price_per_click":10.14, "interpolation":"linear" }, { "recommended_cpm":83, "uniqs":31793.960254985952, "share":94,"price_per_show":83, "price_per_click":10.17, "interpolation":"linear" }, { "recommended_cpm":83.2, "uniqs":31800.715550834208, "share":94, "price_per_show":83.2, "price_per_click":10.19, "interpolation":"linear" }, { "recommended_cpm":83.4, "uniqs":31810.733342342017,"share":94, "price_per_show":83.4, "price_per_click":10.22, "interpolation":"linear" }, { "recommended_cpm":83.6, "uniqs":31815.01496548409, "share":94, "price_per_show":83.6, "price_per_click":10.24, "interpolation":"linear" }, { "recommended_cpm":83.8,"uniqs":31819.998598267277, "share":94, "price_per_show":83.8, "price_per_click":10.27, "interpolation":"linear" }, { "recommended_cpm":84, "uniqs":31823.847506028145, "share":94, "price_per_show":84, "price_per_click":10.29, "interpolation":"linear" }, {"recommended_cpm":84.2, "uniqs":31828.034966257903, "share":94, "price_per_show":84.2, "price_per_click":10.32, "interpolation":"linear" }, { "recommended_cpm":84.4, "uniqs":31832.415246009266, "share":94, "price_per_show":84.4, "price_per_click":10.34,"interpolation":"linear" }, { "recommended_cpm":84.6, "uniqs":31836.909659522127, "share":94, "price_per_show":84.6, "price_per_click":10.37, "interpolation":"linear" }, { "recommended_cpm":84.8, "uniqs":31841.19491651939, "share":94, "price_per_show":84.8,"price_per_click":10.39, "interpolation":"linear" }, { "recommended_cpm":85, "uniqs":31845.561541164217, "share":94, "price_per_show":85, "price_per_click":10.41, "interpolation":"linear" }, { "recommended_cpm":85.2, "uniqs":31849.722356534683, "share":94,"price_per_show":85.2, "price_per_click":10.44, "interpolation":"linear" }, { "recommended_cpm":85.4, "uniqs":31854.268698349988, "share":94, "price_per_show":85.4, "price_per_click":10.46, "interpolation":"linear" }, { "recommended_cpm":85.6, "uniqs":31858.20185013392,"share":94, "price_per_show":85.6, "price_per_click":10.49, "interpolation":"linear" }, { "recommended_cpm":85.8, "uniqs":31862.12248303082, "share":94, "price_per_show":85.8, "price_per_click":10.51, "interpolation":"linear" }, { "recommended_cpm":120,"uniqs":33767.34854039004, "share":100, "price_per_show":120, "price_per_click":14.7, "interpolation":"linear" } ], "dt":"2014-09-1005:28:11", "approximate_ctr":0.008162001254021512 } 19. PROJECTION.JSON{ "recommended_cpm":77.4,"uniqs":31635.713108818883,"share":93,"price_per_show":77.4,"price_per_click":9.48,"interpolation":"linear },{ "recommended_cpm":77.6,"uniqs":31642.42491100323,"share":93,"price_per_show":77.6,"price_per_click":9.51,"interpolation":"linear }, 20. PROJECTION.JSON 21. PLARINPlarin [email protected] Product Director & CTOEmail: [email protected]: mihail.ivankovhttp://www.plarin.net