Искривленное исключение при периодическом задании - PullRequest
2 голосов
/ 22 декабря 2011

У меня есть приложение django, работающее под Twisted.У меня есть server.py со следующим кодом: http://slexy.org/view/s21TBxGPut Когда я запускаю server.py с витой, я получаю следующее исключение: http://slexy.org/view/s2WqQDMvsh

Исключение вызвано двумя последними строками на сервере.py.Если я прокомментирую эти строки, я не буду исключением.Я понятия не имею, как отладить такую ​​вещь.Может быть, у кого-то есть идея, что я делаю не так?

Большое спасибо, Аршавский Александр.

1 Ответ

2 голосов
/ 22 декабря 2011

Ваш TimerService построен неправильно:

ts2 = TimerService(3600, call_command("tamarin_pull_logs"))

Это то же самое, что:

some_func = call_command("tamarin_pull_logs")
ts2 = TimerService(3600, some_func)

Что возвращает call_command?Это не часть вашей пасты, но так как ваше исключение:

exceptions.TypeError: 'NoneType' object is not callable

Я собираюсь догадаться, что он возвращает NoneNone не вызывается, как указывает исключение.

Вы правильно настроили первый TimerService:

ts = TimerService(86400, check_all_notifications)

Обратите внимание, что вы не звоните check_all_notifications вэто утверждение.Вы передаете это TimerService.Вы должны сделать то же самое для другой службы:

ts2 = TimerService(3600, call_command, "tamarin_pull_logs")

Просто так получается, что TimerService создан для поддержки вызова функции с некоторыми аргументами, поэтому он принимает как вызываемые, так и произвольные дополнительные аргументы ипередает эти аргументы вызываемой стороне всякий раз, когда наступает время ее вызова.

...