Created
February 27, 2014 06:43
-
-
Save isaacl/9245517 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ilevy@paxon:/c/2/prom/ndbleak_cur$ ipython -ic 'from ndb_test import *; print fetch_entities(); print len(wd); len(ndb.tasklets._state.all_pending)' | |
Python 2.7.3 (default, Sep 26 2013, 20:03:06) | |
Type "copyright", "credits" or "license" for more information. | |
IPython 0.13.2 -- An enhanced Interactive Python. | |
? -> Introduction and overview of IPython's features. | |
%quickref -> Quick reference. | |
help -> Python's own help system. | |
object? -> Details about 'object', use 'object??' for extra details. | |
^[[(22, 230000) | |
23 | |
Out[1]: 15 | |
In [1]: h = hp.heap() | |
In [2]: h | |
Out[2]: | |
Partition of a set of 11939 objects. Total size = 2347880 bytes. | |
Index Count % Size % Cumulative % Kind (class / dict of class) | |
0 40 0 923160 39 923160 39 unicode | |
1 9064 76 757024 32 1680184 72 str | |
2 436 4 127712 5 1807896 77 list | |
3 63 1 66024 3 1873920 80 dict of | |
google.appengine.datastore.entity_pb.EntityProto | |
4 63 1 66024 3 1939944 83 dict of google.appengine.datastore.entity_pb.Property | |
5 161 1 45080 2 1985024 85 dict of google.appengine.datastore.entity_pb.Path | |
6 161 1 45080 2 2030104 86 dict of | |
google.appengine.datastore.entity_pb.Path_Element | |
7 110 1 44624 2 2074728 88 dict (no owner) | |
8 143 1 40040 2 2114768 90 dict of dummy_thread.LockType | |
9 98 1 27440 1 2142208 91 dict of google.appengine.datastore.entity_pb.Reference | |
<115 more rows. Type e.g. '_.more' to view.> | |
In [3]: h & ndb.EventLoop | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-3-1c5cc99e09e3> in <module>() | |
----> 1 h & ndb.EventLoop | |
AttributeError: 'module' object has no attribute 'EventLoop' | |
In [4]: el = ndb.eventloop._state.eventloop | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-4-233238244c64> in <module>() | |
----> 1 el = ndb.eventloop._state.eventloop | |
AttributeError: '_State' object has no attribute 'eventloop' | |
In [5]: pp(vars(ndb.eventloop._state)) | |
{'event_loop': <ndb.eventloop.EventLoop object at 0x361fe50>} | |
In [6]: el = ndb.eventloop._state.event_loop | |
In [7]: len(el.rpcs) | |
Out[7]: 3 | |
In [8]: ents = h & Entity | |
In [9]: ents | |
Out[9]: | |
Partition of a set of 30 objects. Total size = 1920 bytes. | |
Index Count % Size % Cumulative % Kind (class / dict of class) | |
0 30 100 1920 100 1920 100 0x31bab90 | |
In [10]: h & hp.idset([el]) | |
Out[10]: | |
Partition of a set of 1 object. Total size = 64 bytes. | |
Index Count % Size % Cumulative % Kind (class / dict of class) | |
0 1 100 64 100 64 100 ndb.eventloop.EventLoop | |
In [11]: el_h = h & hp.idset([el]) | |
In [12]: ents.byid[:10].get_shpaths(el_h) | |
Out[12]: 0: Src.__dict__['rpcs'][<google....x3807fd0>][1][3].gi_frame.f_locals['result'] | |
In [13]: ents.byid[:10].get_shpaths(el_h.rpcs.values()) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-13-e6fdebfc87ef> in <module>() | |
----> 1 ents.byid[:10].get_shpaths(el_h.rpcs.values()) | |
/usr/local/lib/python2.7/dist-packages/guppy/heapy/UniSet.pyc in __getattr__(self, other) | |
72 Get family-specific attribute. | |
73 """ | |
---> 74 return self.fam.mod.View.enter(lambda:self.fam.c_getattr(self, other)) | |
75 | |
76 def __le__(self, other): | |
/usr/local/lib/python2.7/dist-packages/guppy/heapy/View.pyc in enter(self, func) | |
255 | |
256 try: | |
--> 257 retval = func() | |
258 finally: | |
259 self.hv.limitframe = None | |
/usr/local/lib/python2.7/dist-packages/guppy/heapy/UniSet.pyc in <lambda>() | |
72 Get family-specific attribute. | |
73 """ | |
---> 74 return self.fam.mod.View.enter(lambda:self.fam.c_getattr(self, other)) | |
75 | |
76 def __le__(self, other): | |
/usr/local/lib/python2.7/dist-packages/guppy/heapy/UniSet.pyc in c_getattr(self, a, b, args, kwds) | |
794 if b in d: | |
795 return d[b](a, *args, **kwds) | |
--> 796 return self.c_getattr2(a, b) | |
797 | |
798 def c_getattr2(self, a, b): | |
/usr/local/lib/python2.7/dist-packages/guppy/heapy/UniSet.pyc in c_getattr2(self, a, b) | |
797 | |
798 def c_getattr2(self, a, b): | |
--> 799 raise AttributeError, b | |
800 | |
801 def c_get_render(self, a): | |
AttributeError: rpcs | |
In [14]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values())) | |
Out[14]: 0: <1 tuple: 0x37eda50*3>[1][3].gi_frame.f_locals['result'] | |
In [15]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1])) | |
Out[15]: 0: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['result'] | |
In [16]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1][3])) | |
--------------------------------------------------------------------------- | |
IndexError Traceback (most recent call last) | |
<ipython-input-16-2a404b33fb92> in <module>() | |
----> 1 ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1][3])) | |
IndexError: tuple index out of range | |
In [17]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1])) | |
Out[17]: 0: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['result'] | |
In [18]: hp.idset(el.rpcs.values()[1]) | |
Out[18]: | |
Partition of a set of 3 objects. Total size = 448 bytes. | |
Index Count % Size % Cumulative % Kind (class / dict of class) | |
0 1 33 280 62 280 62 dict (no owner) | |
1 1 33 88 20 368 82 tuple | |
2 1 33 80 18 448 100 types.MethodType | |
In [19]: bad_rpc = el.rpcs.values()[1] | |
In [20]: bad_rpc | |
Out[20]: | |
(<bound method Future._on_rpc_completion of <Future 37ec750 created by helper(context.py:811) for tasklet run_to_queue(query.py:925); pending>>, | |
(<google.appengine.api.apiproxy_stub_map.UserRPC at 0x3807fd0>, | |
'', | |
<google.appengine.datastore.datastore_rpc.Connection at 0x361ffd0>, | |
<generator object run_to_queue at 0x3874be0>), | |
{}) | |
In [21]: hp.idset(el.rpcs.values()[1]) | |
KeyboardInterrupt | |
In [21]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1][1])) | |
Out[21]: 0: <1 types.GeneratorType: 0x3874be0>.gi_frame.f_locals['result'] | |
In [22]: pp(bad_rpc.gi_frame.f_locals['result']) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-22-4a95f8165ee4> in <module>() | |
----> 1 pp(bad_rpc.gi_frame.f_locals['result']) | |
AttributeError: 'tuple' object has no attribute 'gi_frame' | |
In [23]: pp(bad_rpc[1].gi_frame.f_locals['result']) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-23-6a1d3fc6ca50> in <module>() | |
----> 1 pp(bad_rpc[1].gi_frame.f_locals['result']) | |
AttributeError: 'tuple' object has no attribute 'gi_frame' | |
In [24]: pp(bad_rpc[1][1].gi_frame.f_locals['result']) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-24-a27fc38a94fb> in <module>() | |
----> 1 pp(bad_rpc[1][1].gi_frame.f_locals['result']) | |
AttributeError: 'str' object has no attribute 'gi_frame' | |
In [25]: pp(bad_rpc[2].gi_frame.f_locals['result']) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-25-fc5235f63192> in <module>() | |
----> 1 pp(bad_rpc[2].gi_frame.f_locals['result']) | |
AttributeError: 'dict' object has no attribute 'gi_frame' | |
In [26]: pp(bad_rpc[1][2].gi_frame.f_locals['result']) | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-26-6941ee11c21d> in <module>() | |
----> 1 pp(bad_rpc[1][2].gi_frame.f_locals['result']) | |
AttributeError: 'Connection' object has no attribute 'gi_frame' | |
In [27]: pp(bad_rpc[1][3].gi_frame.f_locals['result']) | |
Entity(key=Key('Entity', 20), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...') | |
In [28]: ents.byid[:10].get_shpaths(hp.idset(el.rpcs.values()[1][1])) | |
Out[28]: 0: <1 types.GeneratorType: 0x3874be0>.gi_frame.f_locals['result'] | |
In [29]: ents.byid[5:10].get_shpaths(hp.idset(el.rpcs.values()[1][1])) | |
Out[29]: 0: <1 types.GeneratorType: 0x3874be0>.gi_frame.f_locals['result'] | |
In [30]: ents.byid[5:10].get_shpaths(hp.idset(el.rpcs.values()[1])) | |
Out[30]: 0: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['result'] | |
In [31]: ents.byid[5].get_shpaths(hp.idset(el.rpcs.values()[1])) | |
Out[31]: | |
0: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
1: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
2: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
3: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
In [32]: ents.byid[5].get_shpaths(hp.idset(el.rpcs.values()[1])) | |
[1]+ Stopped ipython -ic 'from ndb_test import *; print fetch_entities(); print len(wd); len(ndb.tasklets._state.all_pending)' | |
ilevy@paxon:/c/2/prom/ndbleak_cur$ fg | |
ipython -ic 'from ndb_test import *; print fetch_entities(); print len(wd); len(ndb.tasklets._state.all_pending)' | |
Out[32]: | |
0: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
1: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
2: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
3: <1 tuple: 0x3864890*4>[3].gi_frame.f_locals['queue'].__dict__['_waiting'].??.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
In [33]: el.rpcs.values()[1] | |
Out[33]: | |
(<bound method Future._on_rpc_completion of <Future 37ec750 created by helper(context.py:811) for tasklet run_to_queue(query.py:925); pending>>, | |
(<google.appengine.api.apiproxy_stub_map.UserRPC at 0x3807fd0>, | |
'', | |
<google.appengine.datastore.datastore_rpc.Connection at 0x361ffd0>, | |
<generator object run_to_queue at 0x3874be0>), | |
{}) | |
In [34]: el.rpcs.values()[1][1][3] | |
Out[34]: <generator object run_to_queue at 0x3874be0> | |
In [35]: que = el.rpcs.values()[1][1][3].gi_frame.f_locals['queue'] | |
In [36]: que | |
Out[36]: <3 SerialQueueFuture 37ec190 created by helper(context.py:810)> | |
In [37]: vars(que) | |
Out[37]: | |
{'_callbacks': [], | |
'_context': None, | |
'_done': False, | |
'_exception': None, | |
'_full': False, | |
'_immediate_callbacks': [], | |
'_info': None, | |
'_next': None, | |
'_queue': deque([]), | |
'_result': None, | |
'_traceback': None, | |
'_waiting': deque([<Future 385f6d0 created by helper(context.py:814); pending>]), | |
'_where': ['__init__(tasklets.py:781)', | |
'helper(context.py:810)', | |
'_help_tasklet_along(tasklets.py:372) # initial generator helper(context.py:807)', | |
'run0(eventloop.py:183)', | |
'run1(eventloop.py:222)', | |
'wait(tasklets.py:305)', | |
'check_success(tasklets.py:321)', | |
'get_result(tasklets.py:326)', | |
'fetch_page(query.py:1326)', | |
'fetcher(ndb_test.py:74)'], | |
'id': 3} | |
In [38]: ft = iter(que._waiting).next() | |
In [39]: ft | |
Out[39]: <Future 385f6d0 created by helper(context.py:814); pending> | |
In [40]: ents.byid[5].get_shpaths(hp.idset(que._waiting)) | |
Out[40]: | |
0: Src.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
1: Src.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback'].im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
2: Src.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.__self__.__dict__['_batch'].__dict__['_Batch__results'][6] | |
3: Src.__dict__['_callbacks'][0][1][3].gi_frame.f_locals['callback']->ob_ref.im_self.__dict__['_batch'].__dict__['_Batch__results'][6] | |
In [41]: ft._callbacks | |
Out[41]: | |
[(<bound method Future._on_future_completion of <Future 361f590 created by map_query(context.py:839) for tasklet helper(context.py:807) suspended generator helper(context.py:814); pending>>, | |
(<Future 385f6d0 created by helper(context.py:814); pending>, | |
'', | |
<google.appengine.datastore.datastore_rpc.Connection at 0x361ffd0>, | |
<generator object helper at 0x3607780>), | |
{})] | |
In [42]: ft._callbacks[0][1][3].gi_frame.f_locals | |
Out[42]: | |
{'batch': None, | |
'callback': <bound method QueryIterator._extended_callback of <ndb.query.QueryIterator object at 0x361f690>>, | |
'ent': Entity(key=Key('Entity', 20), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
'i': 9, | |
'inq': <3 SerialQueueFuture 37ec190 created by helper(context.py:810)>, | |
'mfut': <2 SerialQueueFuture 361f410 created by iter_query(context.py:868)>, | |
'options': QueryOptions(batch_size=10, limit=11, produce_cursors=True, start_cursor=Cursor(<E-ABAIICE2oDZm9vcgwLEgZFbnRpdHkYCgwU>)), | |
'pass_batch_into_callback': True, | |
'query': Query(kind='Entity'), | |
'self': <ndb.context.Context at 0x3235cd0>, | |
'val': Entity(key=Key('Entity', 20), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...')} | |
In [43]: ppn(ents.byid[5]) | |
Entity(key=Key('Entity', 17), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | |
In [44]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self._batch | |
Out[44]: <google.appengine.datastore.datastore_query.Batch at 0x38087d0> | |
In [45]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self._batch._Batch_results | |
--------------------------------------------------------------------------- | |
AttributeError Traceback (most recent call last) | |
<ipython-input-45-936892c3b63c> in <module>() | |
----> 1 ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self._batch._Batch_results | |
AttributeError: 'Batch' object has no attribute '_Batch_results' | |
In [46]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self._batch._Batch__results | |
Out[46]: | |
[Entity(key=Key('Entity', 11), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 12), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 13), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 14), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 15), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 16), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 17), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 18), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 19), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...'), | |
Entity(key=Key('Entity', 20), val=u'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...')] | |
In [47]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self._batch | |
Out[47]: <google.appengine.datastore.datastore_query.Batch at 0x38087d0> | |
In [48]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self | |
Out[48]: <ndb.query.QueryIterator at 0x361f690> | |
In [49]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'] | |
Out[49]: <bound method QueryIterator._extended_callback of <ndb.query.QueryIterator object at 0x361f690>> | |
In [50]: ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self | |
Out[50]: <ndb.query.QueryIterator at 0x361f690> | |
In [51]: vars(ft._callbacks[0][1][3].gi_frame.f_locals['callback'].im_self) | |
Out[51]: | |
{'_batch': <google.appengine.datastore.datastore_query.Batch at 0x38087d0>, | |
'_fut': None, | |
'_index': 9, | |
'_iter': <2 SerialQueueFuture 361f410 created by iter_query(context.py:868)>, | |
'_lookahead': []} | |
In [52]: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment