petabyte-research / redflags

Automagically checks and filters risky public procurements
http://www.redflags.eu/
Apache License 2.0
4 stars 4 forks source link

Engine pobiera tylko 500 zamówień z MP API #42

Closed KrzysztofMadejski closed 8 years ago

KrzysztofMadejski commented 8 years ago

Wyciąg z logów:

2016-09-29 12:31:14,996 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.EPFScope    > loading procurements. Page number: 1
2016-09-29 12:31:14,997 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.EPFData     > fetching procurement list
2016-09-29 12:31:14,997 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.Connector   > fetching data from zamowienia_publiczne/?limit=10000&page=1
2016-09-29 12:31:15,340 [INFO ] [            main] h.p.redflags.engine.RedflagsEngineApp    > Started RedflagsEngineApp in 5.092 seconds (JVM running for 5.967)
2016-09-29 12:31:17,368 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.EPFScope    > processing notice 2884665, 1 procurement in row
.....
2016-09-29 12:31:17,508 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.EPFScope    > processing notice 2871817, 500 procurement in row
2016-09-29 12:31:17,508 [INFO ] [     rf-engine-0] h.p.redflags.engine.epforgpl.EPFScope    > loading procurements. Page number: 2
2016-09-29 12:31:17,757 [INFO ] [ pool-2-thread-1] h.p.redflags.engine.epforgpl.Connector   > fetching data from zamowienia_publiczne_zamawiajacy/1458
... tu już treść zamówień
2016-09-29 12:37:18,805 [DEBUG] [ pool-2-thread-1] h.p.redflags.engine.gear.GearTrain       > Processing of notice 2871817 finished
2016-09-29 12:37:18,805 [INFO ] [     rf-engine-0] h.p.r.engine.gear.export.FlagExporter    > Nothing to export
2016-09-29 12:37:18,805 [INFO ] [     rf-engine-0] h.p.r.engine.gear.export.FlagExporter    > Nothing to export
2016-09-29 12:37:18,806 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_organization_20160929
2016-09-29 12:37:18,823 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_relationdescriptor_20160929
2016-09-29 12:37:18,857 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_objofthecontract_20160929
2016-09-29 12:37:18,880 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_datatype_20160929
2016-09-29 12:37:18,885 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_cpv_20160929
2016-09-29 12:37:18,886 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_notice_20160929
2016-09-29 12:37:18,898 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_duration_20160929
2016-09-29 12:37:18,907 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_procedure_20160929
2016-09-29 12:37:18,919 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_address_20160929
2016-09-29 12:37:18,949 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_contractingauthority_20160929
2016-09-29 12:37:18,961 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_data_20160929
2016-09-29 12:37:18,977 [DEBUG] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Pushing CSV into MySQL: te_flag_20160929
2016-09-29 12:37:18,987 [INFO ] [     rf-engine-0] h.p.r.engine.gear.export.MySQLExporter   > Exported 500 notices into MySQL
2016-09-29 12:37:18,987 [INFO ] [     rf-engine-0] h.p.r.engine.boot.RedflagsEngineSession  > Finished Redflags engine session with scope hu.petabyte.redflags.engine.epforgpl.EPFScope@687a4832 (HEAP: 55M)
2016-09-29 12:37:18,988 [INFO ] [     rf-engine-0] h.p.r.engine.boot.RedflagsEngineSession  > Processed 500 notices in 6 minutes 4 seconds 949 milliseconds
2016-09-29 12:37:18,990 [INFO ] [    main-destroy] h.p.r.engine.boot.RedflagsEngineBoot     > *** REDFLAGS ENGINE - Stopping

Dlaczego więcej stron nie pobrał? https://api-v3.mojepanstwo.pl/dane/zamowienia_publiczne/?limit=10000&page=1 pobieraa tylko 500 obiektów, bo taki jest limit ustawiony maksymalny, może to trzeba poprawić w skrypcie, bo pewnie myśli że skoro chciał 10000 a dostał 500 to już więcej nie ma

a https://api-v3.mojepanstwo.pl/dane/zamowienia_publiczne/?limit=10000&page=2&_type=objects dalej dane zwraca..

KrzysztofMadejski commented 8 years ago

Zmieniłem PAGE_SIZE na 500 i odpaliłem ponownie

KrzysztofMadejski commented 8 years ago

Nie pomogło zmiana PAGE_SIZE na 500. Drugiej strony już nie pobrał, nawet nie spróbował..

loading procurements. Page number: 2
i dalej już przetwarzanie obiektów..
KrzysztofMadejski commented 8 years ago

W https://github.com/epforgpl/redflags/blob/master/redflags-engine/src/main/java/hu/petabyte/redflags/engine/epforgpl/EPFScope.java#L64 nie maa żadnej pętli, tylko ify

dzierzy commented 8 years ago

Był bug więc poprawiłem. Scope jest formą iteratora, w naszym przypadku łączy sekwencyjnie iteratory pochodzące z kolejnych stron pagingu. Tak jak wspominałem w którymś z mejli nie działa parametr limit, zawsze zwracanych jest 500 elementów. Ostatnią stroną którą udaje się ściągnąć jest strona numer 1000, dla strony 1001 idzie błąd serwera. Podsumowując: redflags teraz ściąga 500 * 1000 elementów

KrzysztofMadejski commented 8 years ago

Idzie!