obshtestvo / sledi-parlamenta

Надежден инструмент за справки и анализ на парламентарната активност
http://parliament.obshtestvo.bg/
The Unlicense
13 stars 3 forks source link

Извличане на спечелени европейски проекти/конкурси #48

Closed simov closed 10 years ago

simov commented 10 years ago

:wave:

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

Като изключим, това което съм написал в readmeто, оказа се че с предходния скипт съм дръпнал само 100 уникални проекта, тоест онзи json файл, към който бях дал линк е невалиден.

Дърпането на списъка с проекти е бавно, тъй като се изпълнява последователно. Възможно е и да има начин да се оптимизира, но не ми се дълбаеше в тази посока. В момента в този dump съдържа 11465 уникални проекта (в момента на сайта показва 11495, нямам идея къде се губят 30)

При изпълнението на втората стъпка стигнах до

Project 73950
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory

което ме изуми, тъй като не пазя нищо в паметта. По всяка вероятност или моят код, или някой от модулите има memory leak

Тоест в dumpа имам

SELECT count(*) FROM `eu-tenders`.Projects where isun is not null;

6859 проекта с пълна информация (поне тази, която скрейпвам)

Това което обмислям да добавя е възможност за подаване на id от което да започне втората стъпка на скрейпъра, тоест при положение че имам всички проекти в dumpа мога да си спестя пускането на стъпка1 да стартирам директно стъпка2

node app.js --project # with some more params

за

SELECT count(*) FROM `eu-tenders`.Projects where id > 73950;

останалите 4584 проекта, тоест мога да си спестя 2 часа чакане. Всички промени по базата са findOrUpdate така че информация веднъж влязла в базата не се губи.

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

:beers:

tsikov commented 10 years ago

Благодаря :)