Kanton Konversioskriptin virheensietökyvyn parantaminen
Konversioskripti saattaa kaatua aika pienistäkin virheistä Asterin tietueissa, jolloin päivitykset pysähtyvät siihen.
- virheensietokykyä voisi kehittää esim. yksittäinen tietue tai kenttä voitaisiin ohittaa jos siinä on ongelma
- tieto virheestä pitäisi saada eteenpäin
- tietuekorjaukset pitäisi pyytää toimijakuvailulta
Tänään tehty seuraavia:
- Poistettu kielikoodien haku Lexvosta Finton SPARQL-rajapinnan kautta, joka usein takkuilee. Sen sijaan kielikoodit on laitettu csv-tiedostoon josta ne luetaan konversioskriptille. Poistaa yhden keskeisen ongelmatekijän kuvioista kokonaan.
- Lisätty URIen validointitarkistuksia moneen paikkaan. Nämä eivät sinänsä aiheuttaneet kovin fataaleja ongelmia, mutta kuitenkin huonoa dataa ja ikäviä virheilmoituksia esim. Fusekin lokiin.
- Lisätty GitHubiin näkyville convert-warnings.log josta näkee minkälaisia virheitä on tullut konversiossa. Tarkoitus on, että tämän perusteella voidaan tehdä korjauksia Asterin tietueissin. Toimijakuvailun väki pääsee suoraan lukemaan tätä virhelistaa.
Edelleen tekemättä:
virheensietokykyä voisi kehittää esim. yksittäinen tietue tai kenttä voitaisiin ohittaa jos siinä on ongelma
Tämä kannattaisi tehdä niin, että yksittäisen tietueen prosessointikoodi laitetaan kokonaisuudessaan try/except-blokkiin niin, että mikä tahansa odottamaton virhe konversiosäännöissä ei kaada koko prosessia. Sen sijaan voitaisiin tulostaa WARNING ja skipata koko tietue.
Nyt melko usein konversio hajoaa siihen, että Finton APIin tehtävä haku epäonnistuu.
Tässä esimerkki tältä päivältä (17.9.2025 aamuyön tunteina):
Traceback (most recent call last):
File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 700, in <module>
main()
File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 466, in main
place = get_place_uri(f['e'], f.get('0'), uri)
File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 263, in get_place_uri
return lookup_yso_place(place_name)
File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 246, in lookup_yso_place
req = requests.get(FINTO_API_BASE + 'yso-paikat/lookup', params=payload)
File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/adapters.py", line 547, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Konversiokoodia voisi muuttaa niin, että se yrittää uudestaan jos tulee tällainen poikkeus. Tai ainakaan se ei saisi kaatua.