Я новичок в скручивании, и мне захотелось имитировать таймер или что-то в этом роде.Скрученный имитирующий таймер с обратным вызовом
Что я имею:
def whatToCall():
print 'Before: ' + str(len(globals.session_manager))
for ses in globals.session_manager:
if ses.expired is True:
globals.session_manager[ses.id] = None
print 'After: ' + str(len(globals.session_manager))
reactor.callLater(15, whatToCall(), None)
def callBacks():
reactor.callLater(15, whatToCall(), None)
....
#: Start the reactor
reactor.callWhenRunning(callBacks())
reactor.listenTCP(globals.port, factory)
reactor.run()
Во-первых, в первый раз я называю не принимает 15 секунд. Во-вторых, это, очевидно, не работает. Я понимаю концепцию цепочек обратных вызовов и откладывается, но имею некоторую борьбу с этим.
В основном я хочу проверить, не истекает ли какая-либо сессия время от времени, и планировать ее каждый раз.
Решаемые: используйте витые задачи:
def checkForExpiredSessions():
print 'Before: ' + str(len(globals.session_manager))
for i, ses in enumerate(globals.session_manager):
if ses.expired is True:
del globals.session_manager[i]
print 'After: ' + str(len(globals.session_manager))
def callBacksRun():
l = task.LoopingCall(checkForExpiredSessions)
l.start(15.0)