Per impostazione predefinita, TornadoScheduler esegue attività pianificate in un pool di thread. La tua attività specifica, tuttavia, utilizza IOLoop e quindi prevede di essere eseguita nello stesso thread. Per risolvere questo problema, puoi utilizzare il metodo add_callback() del tornado IOLoop per pianificare un'attività da eseguire nel thread di IOLoop il prima possibile.
Così:
def your_scheduled_task():
IOLoop.instance().add_callback(your_real_task_function)
o meglio ancora:
scheduler.add_job(IOLoop.instance().add_callback, 'interval', minutes=1, args=[GetWeather])