setTimeout para python

Chame uma função em algum momento no futuro.

Requer pacote apscheduler, instalável via pip.

from apscheduler.scheduler import Scheduler
import datetime as dt

sched
= Scheduler()
sched
.start()

def timeout(job_fn, *fn_args, **delta_args):
"""Like setTimeout in javascript; returns a job object

First argument is the function to be called.


Positional arguments will be passed to the function when it's called.


Keyword arguemnts will be passed to datetime.timedelta


Usage:

# calls `fn()` after 3 seconds

timeout(fn, seconds=3)


# calls `fn(foo, bar)` after 10 seconds

timeout(fn, foor, bar, seconds=10)

"""

time
= dt.datetime.now() + dt.timedelta(**delta_args)
return sched.add_date_job(job_fn, time, fn_args)

Nota: ao contrário do node.js, ter callbacks agendados não impede o processo de encerrar. se você precisar que o processo permaneça vivo, use time.sleep(...).

Exemplo de uso no gist: https://gist.github.com/hasenj/5352608