diff --git a/core/ArchiveExtractor.py b/core/ArchiveExtractor.py
index 5fe1a52c43fe999f71ff69d246a650aed382de36..4b59129c72619fb80c03759e4a3176442c4ddfc8 100755
--- a/core/ArchiveExtractor.py
+++ b/core/ArchiveExtractor.py
@@ -208,18 +208,31 @@ class ArchiveExtractor:
 
         # For each date chunk
         for i_d in range(len(cdates)-1):
-            # Make retrieval request
-            self.logger.debug("Perform ExtractBetweenDates (%s, %s, %s)"%(
-                attribute,
-                cdates[i_d].strftime(DBDFMT),
-                cdates[i_d+1].strftime(DBDFMT))
-                )
 
-            _date, _value = self.extractor.ExtractBetweenDates([
-                attribute,
-                cdates[i_d].strftime(DBDFMT),
-                cdates[i_d+1].strftime(DBDFMT)
-                ])
+            # 2 retries on DevFailed
+            for i in range(3):
+                # Make retrieval request
+                self.logger.debug("Perform ExtractBetweenDates (%s, %s, %s)"%(
+                    attribute,
+                    cdates[i_d].strftime(DBDFMT),
+                    cdates[i_d+1].strftime(DBDFMT))
+                    )
+
+                try:
+                    _date, _value = self.extractor.ExtractBetweenDates([
+                        attribute,
+                        cdates[i_d].strftime(DBDFMT),
+                        cdates[i_d+1].strftime(DBDFMT)
+                        ])
+                except tango.DevFailed as e:
+                    self.logger.warning("The extractor device returned the following error:")
+                    self.logger.warning(e)
+                    self.logger.warning("Retrying...")
+                    continue
+                break
+            if i==2:
+                logger.error("Could not extract this chunk. Check the device extractor")
+                return None
 
             # Transform to datetime - value arrays
             _value = np.asarray(_value, dtype=float)