obshtestvo/sledi-parlamenta — pull request #48 by simov (2014-08-07 06:24:59+00:00)
Title: Извличане на спечелени европейски проекти/конкурси

:wave:

Този PR се отнася за https://github.com/obshtestvo/sledi-parlamenta/issues/41

Като изключим, това което съм написал в [readme](https://github.com/simov/sledi-parlamenta/tree/eu-tenders/data_mining/eu-tenders)то, оказа се че с предходния скипт съм дръпнал само 100 уникални проекта, тоест онзи _json_ файл, към който бях дал линк е невалиден.

Дърпането на списъка с проекти е бавно, тъй като се изпълнява последователно. Възможно е и да има начин да се оптимизира, но не ми се дълбаеше в тази посока. В момента в този [dump](https://drive.google.com/file/d/0B63Chjpn6xTkSC1hc2U1aTBvR2s/edit?usp=sharing) съдържа _11465_ уникални проекта (в момента на сайта показва _11495_, нямам идея къде се губят _30_)

При изпълнението на втората стъпка стигнах до
```bash
Project 73950
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
```
което ме изуми, тъй като не пазя нищо в паметта. По всяка вероятност или моят код, или някой от модулите има _memory leak_

Тоест в [dump](https://drive.google.com/file/d/0B63Chjpn6xTkSC1hc2U1aTBvR2s/edit?usp=sharing)а имам
```sql
SELECT count(*) FROM `eu-tenders`.Projects where isun is not null;
```
_6859_ проекта с пълна информация (поне тази, която [скрейпвам](https://github.com/simov/sledi-parlamenta/tree/eu-tenders/data_mining/eu-tenders#%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB))

Това което обмислям да добавя е възможност за подаване на _id_ от което да започне втората стъпка на скрейпъра, тоест при положение че имам всички проекти в [dump](https://drive.google.com/file/d/0B63Chjpn6xTkSC1hc2U1aTBvR2s/edit?usp=sharing)а мога да си спестя пускането на стъпка1 да стартирам директно стъпка2
```bash
node app.js --project # with some more params
```
за
```sql
SELECT count(*) FROM `eu-tenders`.Projects where id > 73950;
```
останалите _4584_ проекта, тоест мога да си спестя 2 часа чакане. Всички промени по базата са _findOrUpdate_ така че информация веднъж влязла в базата не се губи.

В общи линии е това за сега, може да пропускам нещо. Ще добавя някои неща през времето, естествено съм отворен към предложения

:beers: