ioda-net / geo-api3

Backend from geoadmin/mf-chsdi3
Other
2 stars 0 forks source link

Variable for maxFeatures = 201 #52

Closed tigerfoot closed 8 years ago

tigerfoot commented 8 years ago

Customer announcement

Je viens de tester et j'ai un comportement bizarre si je choisis une 
zone assez importante pour les requêtes (*tant sur geojb que sur les 
portails communaux*).

Dans l'exemple indiqué en pièce jointe, j'ai (sans les parcelles), 200 
éléments pour lesquels je demande des attributs. Du coup, dans la table 
parcelle, je n'ai que 76 enregistrements. TU peux voir sur le png que 
toutes les parcelles ne sont pas en jaune et surtout, je n'ai pas 
l'onglet des attributs des parcelles supplémentaires.

Vu comme c'est, je pencherais donc pour un nombre limite mais est-ce 
bien celà ? Si oui, quel serait l'impact sur le produit si on l'augmente ?

exemple_belprahon

Code impacted

chsdi/views/features.py line 120


    maxFeatures = 201
    features = []
    feature_gen = _get_features_for_filters(params, models, maxFeatures=maxFeatures)

Proposal solution :

Transform the hardcoded value to a global variable stored in configuration

Impact : If the customer set the variable too high there's two problems

To bypass those two failure point, I would recommend a hard check when parsing the value if > 10000 limit to 10000 Set forced a reasonable timeout for wsgi module, so api can timeout before dying.

@Jenselme your comments ?

tigerfoot commented 8 years ago

Stand by

tigerfoot commented 8 years ago

Swisstopo has rework the code at https://github.com/geoadmin/mf-chsdi3/commit/2c6babf912b9b9599fa49258f4dd9ccab11501e3