Skip to content

Commit e1b6ab9

Browse files
committed
import: continue upon failure
If there is an operational error on one of the importer, it is better to still run the other importers Signed-off-by: Pierre Tardy <pierre.tardy@renault.com>
1 parent 3688d89 commit e1b6ab9

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

vulnerabilities/management/commands/import.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
2323

2424
from datetime import datetime
25+
import traceback
2526

2627
from django.core.management.base import BaseCommand
2728
from django.core.management.base import CommandError
@@ -100,10 +101,21 @@ def import_data(self, names, cutoff_date):
100101
self._import_data(importers, cutoff_date)
101102

102103
def _import_data(self, importers, cutoff_date):
104+
failed_importers = []
105+
103106
for importer in importers:
104107
self.stdout.write(f"Importing data from {importer.name}")
105108
batch_size = int(getattr(self, "batch_size", 10))
106-
ImportRunner(importer, batch_size).run(cutoff_date=cutoff_date)
107-
self.stdout.write(
108-
self.style.SUCCESS(f"Successfully imported data from {importer.name}")
109-
)
109+
try:
110+
ImportRunner(importer, batch_size).run(cutoff_date=cutoff_date)
111+
self.stdout.write(
112+
self.style.SUCCESS(f"Successfully imported data from {importer.name}")
113+
)
114+
except Exception:
115+
failed_importers.append(importer.name)
116+
traceback.print_exc()
117+
self.stdout.write(
118+
self.style.ERROR(f"Failure to import data from {importer.name}. Continuing...")
119+
)
120+
if failed_importers:
121+
raise CommandError(f"{len(failed_importers)} failed!: {','.join(failed_importers)}")

0 commit comments

Comments
 (0)