소스 검색

Save partial results from exhausted sources

Kirk Trombley 4 년 전
부모
커밋
dac48fda6c
2개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 1
      server/app/point_gen/random_street_view.py
  2. 6 2
      server/app/point_gen/shared.py

+ 1 - 1
server/app/point_gen/random_street_view.py

@@ -41,7 +41,7 @@ class RSVPointSource(GeoPointSource):
         points = []
         while len(points) < n:
             if attempts > self.max_attempts:
-                raise ExhaustedSourceError()
+                raise ExhaustedSourceError(points)
             points.extend(call_random_street_view(country_lock=self.country_lock))
             attempts += 1
         return points

+ 6 - 2
server/app/point_gen/shared.py

@@ -26,7 +26,8 @@ def point_has_streetview(lat, lng):
 
 
 class ExhaustedSourceError(Exception):
-    pass
+    def __init__(self, partial=[]):
+        self.partial = partial
 
 
 class GeoPointSource:
@@ -73,7 +74,10 @@ class CachedGeoPointSource(GeoPointSource):
         n = n if n is not None else self.stock_target - len(self.stock)
         if n > 0:
             logger.info(f"Restocking {type(self).__name__} with {n} points")
-            pts = self.source.get_points(n)
+            try:
+                pts = self.source.get_points(n)
+            except ExhaustedSourceError as e:
+                pts = e.partial  # take what we can get
             self.stock.extend(pts)
             diff = n - len(pts)
             if diff > 0: