Изучив более подробно материалы о потоках, прислушавшись к советам, решена задача довольно таки просто.
Скрипт будет запускаться через manage.py, так не придется переписывать текущий функционал и при таком запуске будет создан отдельный процесс в системе, запустим в фоне с помощью surepvisord/systemd.
import threading
import time
def example(name ,event):
i = 0
while event.is_set():
print('Thread: %s, %d', % (t1.name, i))
i += 1
time.sleep(10)
try:
event = threading.Event()
event.set()
t1 = threading.Thread(target=example, args=('first', event))
t1.start()
except KeyboardInterrupt:
event.clear()
t1.join()
Чтобы корректно завершать все это дело, напишем скрипт для вброса исключения, после чего event изменит флаг и потоки будут завершены.