Advertisement
Guest User

Untitled

a guest
Jan 31st, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.41 KB | None | 0 0
  1. START OF TRACEBACK
  2. ------------------------------------------------------------------------
  3. File: core/dcs/base.py (Line: 272)
  4. Function: resolve
  5. 265 t = self.dcs.DEFAULT_SERVICE_RESOLUTION_TIMEOUT
  6. 266 try:
  7. 267 yield self.ready_event.wait(timeout=t)
  8. 268 except tornado.gen.TimeoutError:
  9. 269 metrics["errors", ("type", "dcs_resolver_timeout")] += 1
  10. 270 if self.critical:
  11. 271 self.dcs.set_faulty_status("Failed to resolve %s: Timeout" % self.name)
  12. 272 ==> raise ResolutionError()
  13. 273 if not wait and not self.ready_event.is_set():
  14. 274 if self.critical:
  15. 275 self.dcs.set_faulty_status("Failed to resolve %s: No active services" % self.name)
  16. 276 raise ResolutionError()
  17. 277 with self.lock:
  18. 278 if hint and hint in self.service_addresses:
  19. Variables:
  20. full_result = False
  21. hint = None
  22. self = <noc.core.dcs.consuldcs.ConsulResolver object at 0x7f95a6cc3850>
  23. t = datetime.timedelta(0, 300)
  24. timeout = None
  25. wait = True
  26. ------------------------------------------------------------------------
  27. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  28. Function: run
  29. 1056 except Exception:
  30. 1057 self.had_exception = True
  31. 1058 exc_info = sys.exc_info()
  32. 1059 future = None
  33. 1060
  34. 1061 if exc_info is not None:
  35. 1062 try:
  36. 1063 ==> yielded = self.gen.throw(*exc_info)
  37. 1064 finally:
  38. 1065 # Break up a reference to itself
  39. 1066 # for faster GC on CPython.
  40. 1067 exc_info = None
  41. 1068 else:
  42. 1069 yielded = self.gen.send(value)
  43. Variables:
  44. exc_info = None
  45. self = <tornado.gen.Runner object at 0x7f95a6cabe10>
  46. future = None
  47. orig_stack_contexts = ((), None)
  48. ------------------------------------------------------------------------
  49. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  50. Function: result
  51. 231 before the `Future` is done, so the ``timeout`` is never used.
  52. 232 """
  53. 233 self._clear_tb_log()
  54. 234 if self._result is not None:
  55. 235 return self._result
  56. 236 if self._exc_info is not None:
  57. 237 try:
  58. 238 ==> raise_exc_info(self._exc_info)
  59. 239 finally:
  60. 240 self = None
  61. 241 self._check_done()
  62. 242 return self._result
  63. 243
  64. 244 def exception(self, timeout=None):
  65. Variables:
  66. self = None
  67. timeout = None
  68. ------------------------------------------------------------------------
  69. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1055)
  70. Function: run
  71. 1048 return
  72. 1049 self.future = None
  73. 1050 try:
  74. 1051 orig_stack_contexts = stack_context._state.contexts
  75. 1052 exc_info = None
  76. 1053
  77. 1054 try:
  78. 1055 ==> value = future.result()
  79. 1056 except Exception:
  80. 1057 self.had_exception = True
  81. 1058 exc_info = sys.exc_info()
  82. 1059 future = None
  83. 1060
  84. 1061 if exc_info is not None:
  85. Variables:
  86. exc_info = None
  87. self = <tornado.gen.Runner object at 0x7f95a6c26f10>
  88. future = None
  89. orig_stack_contexts = ((), None)
  90. ------------------------------------------------------------------------
  91. File: core/dcs/base.py (Line: 124)
  92. Function: resolve
  93. 117
  94. 118 @tornado.gen.coroutine
  95. 119 def resolve(self, name, hint=None, wait=True, timeout=None,
  96. 120 full_result=False, critical=False):
  97. 121 resolver = yield self.get_resolver(name, critical)
  98. 122 r = yield resolver.resolve(
  99. 123 hint=hint, wait=wait, timeout=timeout,
  100. 124 ==> full_result=full_result
  101. 125 )
  102. 126 raise tornado.gen.Return(r)
  103. 127
  104. 128 @tornado.gen.coroutine
  105. 129 def expire_resolvers(self):
  106. 130 with self.resolvers_lock:
  107. Variables:
  108. full_result = False
  109. hint = None
  110. self = <noc.core.dcs.consuldcs.ConsulDCS object at 0x7f95b3dc86d0>
  111. resolver = <noc.core.dcs.consuldcs.ConsulResolver object at 0x7f95a6cc3850>
  112. name = 'datastream'
  113. critical = False
  114. timeout = None
  115. wait = True
  116. ------------------------------------------------------------------------
  117. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  118. Function: run
  119. 1056 except Exception:
  120. 1057 self.had_exception = True
  121. 1058 exc_info = sys.exc_info()
  122. 1059 future = None
  123. 1060
  124. 1061 if exc_info is not None:
  125. 1062 try:
  126. 1063 ==> yielded = self.gen.throw(*exc_info)
  127. 1064 finally:
  128. 1065 # Break up a reference to itself
  129. 1066 # for faster GC on CPython.
  130. 1067 exc_info = None
  131. 1068 else:
  132. 1069 yielded = self.gen.send(value)
  133. Variables:
  134. exc_info = None
  135. self = <tornado.gen.Runner object at 0x7f95a6c26f10>
  136. future = None
  137. orig_stack_contexts = ((), None)
  138. ------------------------------------------------------------------------
  139. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  140. Function: result
  141. 231 before the `Future` is done, so the ``timeout`` is never used.
  142. 232 """
  143. 233 self._clear_tb_log()
  144. 234 if self._result is not None:
  145. 235 return self._result
  146. 236 if self._exc_info is not None:
  147. 237 try:
  148. 238 ==> raise_exc_info(self._exc_info)
  149. 239 finally:
  150. 240 self = None
  151. 241 self._check_done()
  152. 242 return self._result
  153. 243
  154. 244 def exception(self, timeout=None):
  155. Variables:
  156. self = None
  157. timeout = None
  158. ------------------------------------------------------------------------
  159. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1055)
  160. Function: run
  161. 1048 return
  162. 1049 self.future = None
  163. 1050 try:
  164. 1051 orig_stack_contexts = stack_context._state.contexts
  165. 1052 exc_info = None
  166. 1053
  167. 1054 try:
  168. 1055 ==> value = future.result()
  169. 1056 except Exception:
  170. 1057 self.had_exception = True
  171. 1058 exc_info = sys.exc_info()
  172. 1059 future = None
  173. 1060
  174. 1061 if exc_info is not None:
  175. Variables:
  176. exc_info = None
  177. self = <tornado.gen.Runner object at 0x7f95b36388d0>
  178. future = None
  179. orig_stack_contexts = ((), None)
  180. ------------------------------------------------------------------------
  181. File: core/datastream/client.py (Line: 100)
  182. Function: resolve
  183. 93 if "X-NOC-DataStream-Last-Change" in headers:
  184. 94 change_id = headers["X-NOC-DataStream-Last-Change"]
  185. 95 elif not block:
  186. 96 break # Empty batch, stop if non-blocking mode
  187. 97
  188. 98 @tornado.gen.coroutine
  189. 99 def resolve(self, host):
  190. 100 ==> svc = yield self.service.dcs.resolve(host)
  191. 101 host, port = svc.split(":")
  192. 102 raise tornado.gen.Return((host, int(port)))
  193. Variables:
  194. host = 'datastream'
  195. self =
  196. <noc.services.ping.datastream.PingDataStreamClient object at 0x7f95a6cabfd0>
  197. ------------------------------------------------------------------------
  198. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  199. Function: run
  200. 1056 except Exception:
  201. 1057 self.had_exception = True
  202. 1058 exc_info = sys.exc_info()
  203. 1059 future = None
  204. 1060
  205. 1061 if exc_info is not None:
  206. 1062 try:
  207. 1063 ==> yielded = self.gen.throw(*exc_info)
  208. 1064 finally:
  209. 1065 # Break up a reference to itself
  210. 1066 # for faster GC on CPython.
  211. 1067 exc_info = None
  212. 1068 else:
  213. 1069 yielded = self.gen.send(value)
  214. Variables:
  215. exc_info = None
  216. self = <tornado.gen.Runner object at 0x7f95b36388d0>
  217. future = None
  218. orig_stack_contexts = ((), None)
  219. ------------------------------------------------------------------------
  220. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  221. Function: result
  222. 231 before the `Future` is done, so the ``timeout`` is never used.
  223. 232 """
  224. 233 self._clear_tb_log()
  225. 234 if self._result is not None:
  226. 235 return self._result
  227. 236 if self._exc_info is not None:
  228. 237 try:
  229. 238 ==> raise_exc_info(self._exc_info)
  230. 239 finally:
  231. 240 self = None
  232. 241 self._check_done()
  233. 242 return self._result
  234. 243
  235. 244 def exception(self, timeout=None):
  236. Variables:
  237. self = None
  238. timeout = None
  239. ------------------------------------------------------------------------
  240. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1055)
  241. Function: run
  242. 1048 return
  243. 1049 self.future = None
  244. 1050 try:
  245. 1051 orig_stack_contexts = stack_context._state.contexts
  246. 1052 exc_info = None
  247. 1053
  248. 1054 try:
  249. 1055 ==> value = future.result()
  250. 1056 except Exception:
  251. 1057 self.had_exception = True
  252. 1058 exc_info = sys.exc_info()
  253. 1059 future = None
  254. 1060
  255. 1061 if exc_info is not None:
  256. Variables:
  257. exc_info = None
  258. self = <tornado.gen.Runner object at 0x7f95a6c35390>
  259. future = None
  260. orig_stack_contexts = ((), None)
  261. ------------------------------------------------------------------------
  262. File: core/http/client.py (Line: 150)
  263. Function: fetch
  264. 143 host = u.netloc
  265. 144 port = DEFAULT_PORTS.get(u.scheme)
  266. 145 if not port:
  267. 146 raise tornado.gen.Return((ERR_TIMEOUT, {}, "Cannot resolve port for scheme: %s" % u.scheme))
  268. 147 if is_ipv4(host):
  269. 148 addr = host
  270. 149 else:
  271. 150 ==> addr = yield resolver(host)
  272. 151 if not addr:
  273. 152 raise tornado.gen.Return((ERR_TIMEOUT, {}, "Cannot resolve host: %s" % host))
  274. 153 # Detect proxy server
  275. 154 if allow_proxy:
  276. 155 proxy = (proxies or SYSTEM_PROXIES).get(u.scheme)
  277. 156 else:
  278. Variables:
  279. follow_redirects = False
  280. max_buffer_size = 131072
  281. io_loop = <tornado.platform.epoll.EPollIOLoop object at 0x7f95a7888f90>
  282. port = 80
  283. request_timeout = 3600
  284. password = None
  285. allow_proxy = False
  286. eof_mark = None
  287. use_tls = False
  288. method = 'GET'
  289. content_encoding = None
  290. connect_timeout = 10
  291. body = None
  292. get_ssl_options = <function get_ssl_options at 0x7f95a6cb38c0>
  293. host = 'datastream'
  294. user = None
  295. resolver =
  296. <bound method PingDataStreamClient.resolve of <noc.services.ping.datastream.PingDataStreamClient object at 0x7f95a6cabfd0>>
  297. proxies = None
  298. validate_cert = False
  299. url =
  300. 'http://datastream/api/datastream/cfgping?filter=pool(default)&filter=shard(1,4)&block=1&limit=1000&from=5c4ac921b19531fdd9855d6a'
  301. max_redirects = 5
  302. headers = {'X-NOC-API-Access': 'datastream:cfgping'}
  303. u =
  304. ParseResult(scheme='http', netloc='datastream', path='/api/datastream/cfgping', params='', query='filter=pool(default)&filter=shard(1,4)&block=1&limit=1000&from=5c4ac921b19531fdd9855d6a', fragment='')
  305. ------------------------------------------------------------------------
  306. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  307. Function: run
  308. 1056 except Exception:
  309. 1057 self.had_exception = True
  310. 1058 exc_info = sys.exc_info()
  311. 1059 future = None
  312. 1060
  313. 1061 if exc_info is not None:
  314. 1062 try:
  315. 1063 ==> yielded = self.gen.throw(*exc_info)
  316. 1064 finally:
  317. 1065 # Break up a reference to itself
  318. 1066 # for faster GC on CPython.
  319. 1067 exc_info = None
  320. 1068 else:
  321. 1069 yielded = self.gen.send(value)
  322. Variables:
  323. exc_info = None
  324. self = <tornado.gen.Runner object at 0x7f95a6c35390>
  325. future = None
  326. orig_stack_contexts = ((), None)
  327. ------------------------------------------------------------------------
  328. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  329. Function: result
  330. 231 before the `Future` is done, so the ``timeout`` is never used.
  331. 232 """
  332. 233 self._clear_tb_log()
  333. 234 if self._result is not None:
  334. 235 return self._result
  335. 236 if self._exc_info is not None:
  336. 237 try:
  337. 238 ==> raise_exc_info(self._exc_info)
  338. 239 finally:
  339. 240 self = None
  340. 241 self._check_done()
  341. 242 return self._result
  342. 243
  343. 244 def exception(self, timeout=None):
  344. Variables:
  345. self = None
  346. timeout = None
  347. ------------------------------------------------------------------------
  348. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1055)
  349. Function: run
  350. 1048 return
  351. 1049 self.future = None
  352. 1050 try:
  353. 1051 orig_stack_contexts = stack_context._state.contexts
  354. 1052 exc_info = None
  355. 1053
  356. 1054 try:
  357. 1055 ==> value = future.result()
  358. 1056 except Exception:
  359. 1057 self.had_exception = True
  360. 1058 exc_info = sys.exc_info()
  361. 1059 future = None
  362. 1060
  363. 1061 if exc_info is not None:
  364. Variables:
  365. exc_info = None
  366. self = <tornado.gen.Runner object at 0x7f95a6c26e10>
  367. future = None
  368. orig_stack_contexts = ((), None)
  369. ------------------------------------------------------------------------
  370. File: core/datastream/client.py (Line: 73)
  371. Function: query
  372. 66 if qs:
  373. 67 url = "%s?%s" % (base_url, "&".join(qs))
  374. 68 else:
  375. 69 url = base_url
  376. 70 # Get data
  377. 71 logger.debug("Request: %s", url)
  378. 72 code, headers, data = yield fetch(url, io_loop=io_loop,
  379. 73 ==> resolver=self.resolve, headers=req_headers)
  380. 74 logger.debug("Response: %s %s", code, headers)
  381. 75 if code == ERR_TIMEOUT or code == ERR_READ_TIMEOUT:
  382. 76 continue # Retry on timeout
  383. 77 elif code != 200:
  384. 78 logger.info("Invalid response code: %s", code)
  385. 79 raise NOCError(code=ERR_DS_BAD_CODE, msg="Invalid response code %s" % code)
  386. Variables:
  387. qs =
  388. ['filter=pool(default)',
  389. 'filter=shard(1,4)',
  390. 'block=1',
  391. 'limit=1000',
  392. 'from=5c4ac921b19531fdd9855d6a']
  393. code = 598
  394. headers = {}
  395. url =
  396. 'http://datastream/api/datastream/cfgping?filter=pool(default)&filter=shard(1,4)&block=1&limit=1000&from=5c4ac921b19531fdd9855d6a'
  397. base_qs = ['filter=pool(default)', 'filter=shard(1,4)', 'block=1', 'limit=1000']
  398. self =
  399. <noc.services.ping.datastream.PingDataStreamClient object at 0x7f95a6cabfd0>
  400. base_url = 'http://datastream/api/datastream/cfgping'
  401. item =
  402. {u'address': u'188.68.184.75',
  403. u'bi_id': 6416174231453432276L,
  404. u'change_id': u'5c4ac921b19531fdd9855d6a',
  405. u'count': 3,
  406. u'id': u'29',
  407. u'interval': 60,
  408. u'name': u'MNpon',
  409. u'policy': u'f',
  410. u'pool': u'default',
  411. u'report_attempts': True,
  412. u'report_rtt': True,
  413. u'size': 64,
  414. u'status': None,
  415. u'timeout': 1000}
  416. limit = 1000
  417. filters = ['pool(default)', 'shard(1,4)']
  418. change_id = '5c4ac921b19531fdd9855d6a'
  419. req_headers = {'X-NOC-API-Access': 'datastream:cfgping'}
  420. x = 'shard(1,4)'
  421. io_loop = None
  422. data = 'Request timed out'
  423. block = 1
  424. ------------------------------------------------------------------------
  425. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  426. Function: run
  427. 1056 except Exception:
  428. 1057 self.had_exception = True
  429. 1058 exc_info = sys.exc_info()
  430. 1059 future = None
  431. 1060
  432. 1061 if exc_info is not None:
  433. 1062 try:
  434. 1063 ==> yielded = self.gen.throw(*exc_info)
  435. 1064 finally:
  436. 1065 # Break up a reference to itself
  437. 1066 # for faster GC on CPython.
  438. 1067 exc_info = None
  439. 1068 else:
  440. 1069 yielded = self.gen.send(value)
  441. Variables:
  442. exc_info = None
  443. self = <tornado.gen.Runner object at 0x7f95a6c26e10>
  444. future = None
  445. orig_stack_contexts = ((), None)
  446. ------------------------------------------------------------------------
  447. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  448. Function: result
  449. 231 before the `Future` is done, so the ``timeout`` is never used.
  450. 232 """
  451. 233 self._clear_tb_log()
  452. 234 if self._result is not None:
  453. 235 return self._result
  454. 236 if self._exc_info is not None:
  455. 237 try:
  456. 238 ==> raise_exc_info(self._exc_info)
  457. 239 finally:
  458. 240 self = None
  459. 241 self._check_done()
  460. 242 return self._result
  461. 243
  462. 244 def exception(self, timeout=None):
  463. Variables:
  464. self = None
  465. timeout = None
  466. ------------------------------------------------------------------------
  467. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1055)
  468. Function: run
  469. 1048 return
  470. 1049 self.future = None
  471. 1050 try:
  472. 1051 orig_stack_contexts = stack_context._state.contexts
  473. 1052 exc_info = None
  474. 1053
  475. 1054 try:
  476. 1055 ==> value = future.result()
  477. 1056 except Exception:
  478. 1057 self.had_exception = True
  479. 1058 exc_info = sys.exc_info()
  480. 1059 future = None
  481. 1060
  482. 1061 if exc_info is not None:
  483. Variables:
  484. exc_info = None
  485. self = <tornado.gen.Runner object at 0x7f95a6c26e50>
  486. future = None
  487. orig_stack_contexts = ((), None)
  488. ------------------------------------------------------------------------
  489. File: services/ping/service.py (Line: 128)
  490. Function: get_object_mappings
  491. 121 try:
  492. 122 yield client.query(
  493. 123 limit=config.ping.ds_limit,
  494. 124 filters=[
  495. 125 "pool(%s)" % config.pool,
  496. 126 "shard(%d,%d)" % (self.slot_number, self.total_slots)
  497. 127 ],
  498. 128 ==> block=1
  499. 129 )
  500. 130 except NOCError as e:
  501. 131 self.logger.info("Failed to get object mappings: %s", e)
  502. 132 yield tornado.gen.sleep(1)
  503. 133
  504. 134 def update_probe(self, data):
  505. Variables:
  506. self = <__main__.PingService object at 0x7f95a7878cd0>
  507. client =
  508. <noc.services.ping.datastream.PingDataStreamClient object at 0x7f95a6cabfd0>
  509. ------------------------------------------------------------------------
  510. File: local/lib/python2.7/site-packages/tornado/gen.py (Line: 1063)
  511. Function: run
  512. 1056 except Exception:
  513. 1057 self.had_exception = True
  514. 1058 exc_info = sys.exc_info()
  515. 1059 future = None
  516. 1060
  517. 1061 if exc_info is not None:
  518. 1062 try:
  519. 1063 ==> yielded = self.gen.throw(*exc_info)
  520. 1064 finally:
  521. 1065 # Break up a reference to itself
  522. 1066 # for faster GC on CPython.
  523. 1067 exc_info = None
  524. 1068 else:
  525. 1069 yielded = self.gen.send(value)
  526. Variables:
  527. exc_info = None
  528. self = <tornado.gen.Runner object at 0x7f95a6c26e50>
  529. future = None
  530. orig_stack_contexts = ((), None)
  531. ------------------------------------------------------------------------
  532. File: local/lib/python2.7/site-packages/tornado/concurrent.py (Line: 238)
  533. Function: result
  534. 231 before the `Future` is done, so the ``timeout`` is never used.
  535. 232 """
  536. 233 self._clear_tb_log()
  537. 234 if self._result is not None:
  538. 235 return self._result
  539. 236 if self._exc_info is not None:
  540. 237 try:
  541. 238 ==> raise_exc_info(self._exc_info)
  542. 239 finally:
  543. 240 self = None
  544. 241 self._check_done()
  545. 242 return self._result
  546. 243
  547. 244 def exception(self, timeout=None):
  548. Variables:
  549. self = None
  550. timeout = None
  551. ------------------------------------------------------------------------
  552. File: local/lib/python2.7/site-packages/tornado/ioloop.py (Line: 626)
  553. Function: _discard_future_result
  554. 619 else:
  555. 620 self.add_future(ret, self._discard_future_result)
  556. 621 except Exception:
  557. 622 self.handle_callback_exception(callback)
  558. 623
  559. 624 def _discard_future_result(self, future):
  560. 625 """Avoid unhandled-exception warnings from spawned coroutines."""
  561. 626 ==> future.result()
  562. 627
  563. 628 def handle_callback_exception(self, callback):
  564. 629 """This method is called whenever a callback run by the `IOLoop`
  565. 630 throws an exception.
  566. 631
  567. 632 By default simply logs the exception as an error. Subclasses
  568. Variables:
  569. self = <tornado.platform.epoll.EPollIOLoop object at 0x7f95a7888f90>
  570. future = <tornado.concurrent.Future object at 0x7f95a6cabf10>
  571. ------------------------------------------------------------------------
  572. File: local/lib/python2.7/site-packages/tornado/stack_context.py (Line: 277)
  573. Function: null_wrapper
  574. 270
  575. 271 if not cap_contexts[0][0] and not cap_contexts[0][1]:
  576. 272 # Fast path when there are no active contexts.
  577. 273 def null_wrapper(*args, **kwargs):
  578. 274 try:
  579. 275 current_state = _state.contexts
  580. 276 _state.contexts = cap_contexts[0]
  581. 277 ==> return fn(*args, **kwargs)
  582. 278 finally:
  583. 279 _state.contexts = current_state
  584. 280 null_wrapper._wrapped = True
  585. 281 return null_wrapper
  586. 282
  587. 283 def wrapped(*args, **kwargs):
  588. Variables:
  589. cap_contexts = [((), None)]
  590. args = (<tornado.concurrent.Future object at 0x7f95a6cabf10>,)
  591. current_state = ((), None)
  592. fn =
  593. <bound method EPollIOLoop._discard_future_result of <tornado.platform.epoll.EPollIOLoop object at 0x7f95a7888f90>>
  594. kwargs = {}
  595. ------------------------------------------------------------------------
  596. File: local/lib/python2.7/site-packages/tornado/ioloop.py (Line: 605)
  597. Function: _run_callback
  598. 598
  599. 599 def _run_callback(self, callback):
  600. 600 """Runs a callback with error handling.
  601. 601
  602. 602 For use in subclasses.
  603. 603 """
  604. 604 try:
  605. 605 ==> ret = callback()
  606. 606 if ret is not None:
  607. 607 from tornado import gen
  608. 608 # Functions that return Futures typically swallow all
  609. 609 # exceptions and store them in the Future. If a Future
  610. 610 # makes it out to the IOLoop, ensure its exception (if any)
  611. 611 # gets logged too.
  612. Variables:
  613. callback = <functools.partial object at 0x7f95a67e0100>
  614. self = <tornado.platform.epoll.EPollIOLoop object at 0x7f95a7888f90>
  615. ------------------------------------------------------------------------
  616. END OF TRACEBACK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement