Невозможно сбросить индекс в функции просмотра

Я вызываю функцию представления и эта функция вызывает другую функцию на таймере длительностью 1 мин. Проблема заключается в сбросе значения 'i'.

Может ли кто-нибудь помочь мне выяснить, как это исправить или придумать новый способ сделать это.

Я хочу вызвать функцию getABC на таймере длительностью в одну минуту и заставить ее просмотреть список 'listOfStrings', а затем начать список заново, как только он достигнет конца.

У меня такое чувство, что я смотрю на что-то сквозь пальцы и делаю это намного сложнее, чем нужно.

def viewfunction(request):

  listOfStrings = [...list Of Strings ]
  i = 0

  def func():
    for each in range(i-60, i-1):
        getABC(listOfStrings[each], each)
        if listOfStrings[each] == 'ZYXI':
            i = 0
            return

  schedule.every(1).minutes.do(lambda: func())

  while True:
    i += 1
    schedule.run_pending()
    time.sleep(1)

Проблема с кодом выше заключается в том, что 'i' в "for each in range(i-60, i-1):" получает UnboundLocalError: local variable 'i' referred before assignment.

Затем я пытаюсь передать i в качестве параметра, а затем вернуть его, но не знаю, как получить доступ к переменной return.

def viewfunction(request):

  listOfStrings = [...list Of Strings ]
  i = 0

  def func(i):
      for each in range(i-60, i-1):
        getABC (listOfStrings[each], each)
        if listOfStrings[each] == 'ZYXI':
            i = 0
            return

  schedule.every(1).minutes.do(lambda: func(i))

  while True:
    i += 1
    schedule.run_pending()
    time.sleep(1)

В итоге мне нужно, чтобы функция getABC вызывалась каждые 1 минуту, при этом передавая каждую итерацию в качестве параметра при каждом вызове. А затем, достигнув конца списка, перезапустить и начать снова с начала списка. Бесконечный цикл.

Вернуться на верх