Based on my testing, this is because threads can only be started once, and as the timer relies on a thread, the timer can only be started once. This means that the only way to re-start the timer would be to do:

def newTimer():
    global t
    t = Timer(10.0,api_call)
newTimer()

instead of the t = Timer part, and do

t.cancel()
newTimer()
t.start()

instead of the current re-start code.

This makes your full code:

from threading import Timer

def api_call():
    print("Call that there api")

def newTimer():
    global t
    t = Timer(10.0,api_call)
newTimer()


def my_callback(channel):

    if something_true:
        print('reset timer and start again')
        t.cancel()
        newTimer()
        t.start()
        print("\n timer started")
    elif something_else_true:
        t.cancel()
        print("timer canceled")
    else:
       t.cancel()
       print('cancel timer for sure')

try:
    if outside_input_that_can_happen_a_lot:
        my_callback()

finally:
    #cleanup objects

Hope this helps.

Answer from CrazySqueak on Stack Overflow
🌐
GitHub
gist.github.com › aeroaks › ac4dbed9c184607a330c
Reset Timer in Python · GitHub
Reset Timer in Python. GitHub Gist: instantly share code, notes, and snippets.
🌐
Python
docs.python.org › 3 › library › threading.html
threading — Thread-based parallelism — Python 3.14.4 ...
Timers are started, as with threads, by calling their Timer.start method. The timer can be stopped (before its action has begun) by calling the cancel() method.
🌐
PyPI
pypi.org › project › resettabletimer
Client Challenge
JavaScript is disabled in your browser · Please enable JavaScript to proceed · A required part of this site couldn’t load. This may be due to a browser extension, network issues, or browser settings. Please check your connection, disable any ad blockers, or try using a different browser
🌐
ActiveState
code.activestate.com › recipes › 577407-resettable-timer-class-a-little-enhancement-from-p
Resettable Timer class (a little enhancement from python builtin Timer class) « Python recipes « ActiveState Code
So, took the initiative to look at builtin python Timer code and add an enhancement to support reset function, as well as changing the timer interval time while calling reset. ... This seems not to work: once the timer stopped running, it can't be restarted whatsoever. Is there a way to make a timer restart after it's finished? Eddy Jacob (author) 10 years, 11 months ago # | flag · The Timer is based on Thread...
🌐
ProgramCreek
programcreek.com › python › example › 2317 › threading.Timer
Python Examples of threading.Timer
def start(self, instance, fields=None, restore=None, send_update=None): """ Starts a threading.Timer chain, to repeatedly update a resource instances's expirationTime. @param instance: resource instance @param fields: additional fields mandatory during update @param restore: function that will ...
🌐
Python
mail.python.org › pipermail › tutor › 2012-November › 092767.html
[Tutor] Reusing Timers (threading.timer)
November 14, 2012 - I expect that calling my_timer.start() after cancelling it would restart it, but haven't tested it. Just because you create a new timer doesn't mean you have to give it an entirely new name. > 3. If I get a value from a textbox, how do I parse it from the string > value to an integer (or float)? This has nothing to do with timers, and should go into a separate email thread so that those people who know nothing about threading can contribute.
Find elsewhere
🌐
EDUCBA
educba.com › home › software development › software development tutorials › python tutorial › python threading timer
Python Threading Timer | Various Examples of Python Threading Timer
March 23, 2023 - It can also be stopped even before it has started execution by utilizing the cancel() function corresponding to that threading.Timer() object. ... Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more. We need to import the python library “threading” to use the “Timer” function specified in it.
Address   Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
Bogotobogo
bogotobogo.com › python › Multithread › python_multithreading_subclassing_Timer_Object.php
Python Multithreading Tutorial: Timer Object - 2020
(MainThread) starting timers... (MainThread) waiting before canceling t2 (MainThread) canceling t2 before cancel t2.is_alive() = True after cancel t2.is_alive() = False (t1 ) thread function running (MainThread) done
🌐
Delft Stack
delftstack.com › home › howto › python › threading.timer python
Timer Class in the Threading Module in Python | Delft Stack
October 10, 2023 - Now that we are done with the theory, let us understand how we can practically use this class to create an infinite timer. Refer to the following code for the same. from time import sleep from threading import Timer from datetime import datetime class MyInfiniteTimer: """ A Thread that executes infinitely """ def __init__(self, t, hFunction): self.t = t self.hFunction = hFunction self.thread = Timer(self.t, self.handle_function) def handle_function(self): self.hFunction() self.thread = Timer(self.t, self.handle_function) self.thread.start() def start(self): self.thread = Timer(self.t, self.handle_function) self.thread.start() def cancel(self): self.thread.cancel() def print_current_datetime(): print(datetime.today()) t = MyInfiniteTimer(1, print_current_datetime) t.start() sleep(5) t.cancel() sleep(5) t.start() sleep(5) t.cancel()
🌐
Raspberry Pi Forums
forums.raspberrypi.com › board index › programming › python
A resetable background timer? - Raspberry Pi Forums
Is there a timer (well, damn) which fires every let's say second and allows for a callback? ... import threading # this is bulit in library timeout_obj = []# intial a list to store a timer w def button(xxx,yyy): xxxxxxxx self.timeout_obj.cancel()#cancel the timer which declare before timeout_obj = threading.Timer(23.0, timer_reaction) def timer_reaction(xxx,yyy): xxxxxxxxx
🌐
Webscale
section.io › home › blog
How to Perform Threading Timer in Python
June 24, 2025 - Get the latest insights on AI, personalization, infrastructure, and digital commerce from the Webscale team and partners.
🌐
Super Fast Python
superfastpython.com › home › tutorials › how to restart a thread in python
How to Restart a Thread in Python - Super Fast Python
September 11, 2022 - You cannot restart a thread in Python, instead you must create and start a new thread with the same configuration. In this tutorial you will discover how to simulate restarting a thread in Python.
🌐
Python Pool
pythonpool.com › home › blog › understanding the python timer class with examples
Understanding the Python Timer Class with Examples - Python Pool
May 23, 2021 - There are different types of timer implementations in python according to user needs, namely, python timer function (to check script execution time), python threading timer (to check the time taken by a thread to finish), python countdown timer (create a countdown timer) and basic python time ...
🌐
Studytonight
studytonight.com › python › python-threading-timer-object
Python Timer Object | Studytonight
threading.Timer(interval, function, args=[], kwargs={}) This way we can create a timer object that will run the function with arguments args and keyword arguments kwargs, after interval seconds have passed. In the Timer class we have two methods used for starting and cancelling the execution of the timer object.