def handle(self, **options):
t = time()
counter = 0
+ tasks = []
while True:
if options['time'] is not None and time() - t > options['time']:
break
if options['limit'] is not None and counter >= options['limit']:
break
- tasks = EbookField.find_all_stale(Book, 1)
+ if not tasks:
+ tasks = EbookField.find_all_stale(Book, options['limit'] or 100)
if not tasks:
break
- for field_name, book in tasks:
- print(field_name, book)
- try:
- getattr(book, field_name).build()
- except Exception as e:
- print('ERROR', e)
+ field_name, book = tasks.pop(0)
+ print(field_name, book)
+ counter += 1
+ try:
+ getattr(book, field_name).build()
+ except Exception as e:
+ print('ERROR', e)
@classmethod
def get(cls, placement):
- carousel = cls.objects.filter(models.Q(language='') | models.Q(language=get_language()), placement=placement).order_by('-priority', '?').first()
+ carousel = cls.objects.filter(placement=placement).order_by('-priority', '?').first()
if carousel is None:
carousel = cls.objects.create(placement=placement)
return carousel