Я получаю эту ошибку:Python HTTP 599: Соединение закрыто (Tornado)
HTTP 599: Connection closed [E 130405 11:43:14 web:1031] Uncaught exception GET /networks/1/sensors/1/alarm (127.0.0.1)
при выполнении следующего кода:
from tornado.stack_context import ExceptionStackContext
def handle_exc(*args):
print('Exception occured')
return True
@tornado.gen.engine
def check_status_changes(netid, sensid):
como_url = "".join(['http://131.114.52:44444/ztc?netid=', str(netid), '&sensid=', str(sensid), '&start=-5s&end=-1s'])
http_client = AsyncHTTPClient()
response = yield tornado.gen.Task(http_client.fetch, como_url)
if response.error is not None:
print("Terzo")
print response.error
with ExceptionStackContext(handle_exc):
response.rethrow()
else:
print('Handle request')
for line in response.body.split("\n"):
if line != "":
#net = int(line.split(" ")[1])
#sens = int(line.split(" ")[2])
#stype = int(line.split(" ")[3])
value = int(line.split(" ")[4])
print value
yield value
return
class AlarmHandler(BaseHandler):
@tornado.web.authenticated
@tornado.web.asynchronous
@tornado.gen.engine
def get(self, netid, sensid):
self.lock_tables("read", ['devices'])
status = self.db.get("SELECT status from devices \
WHERE id=%s AND network_id=%s", sensid, netid)
print("Primo")
print status
try:
periodic = tornado.ioloop.PeriodicCallback(check_status_changes(netid, sensid), 5000)
value = periodic.start()
print("Secondo")
print value
except:
print("Quarto")
periodic.stop()
self.finish()
return
if value != status['status']:
self.lock_tables("write", ['devices'])
self.db.execute("UPDATE devices SET status=%s \
WHERE id=%s AND network_id=%s", value, netid, sensid)
self.unlock_tables()
self.notice("Status changed")
В классе AlarmHandler
есть периодическая процедура называется check_status_changes
, В этой функции я получаю ошибку заголовка, когда есть response.error.
Как установить условие ошибки, чтобы вернуться в класс и управлять ситуацией? Спасибо.
ДРУГИЕ INFORMATIONS
Если я делаю экран Tornado, я вижу это:
Primo
{'status': None}
Secondo
None
Terzo
HTTP 599: Connection closed
Exception occured
так, я думаю, что программа закрывает соединение перед тем исключением является rethtow!
И в HTML Пульт Я вижу эту ошибку:
File "./wsn.py", line 226, in check_status_changes for line in response.body.split("\n"): AttributeError: 'NoneType' object has no attribute 'split'
Ok MattH Я попробовал с этим решением http://stackoverflow.com/a/7623570/1353274 вы даете мне в чате python. Я пробовал, но ошибка такая же ... Поиск в Интернете Я видел, что есть похожая ошибка в старой версии Tornado ... может быть, моя проблема? Как я могу получить версию Tornado? Однако я редактирую вопрос с вашим решением. – sharkbait