流框架错误
Error with Stream Framework
我正在尝试设置基本供稿:
from stream_framework.feeds.redis import RedisFeed
class PinFeed(RedisFeed):
key_format = 'feed:normal:%(user_id)s'
class UserPinFeed(PinFeed):
key_format = 'feed:user:%(user_id)s'
feed = UserPinFeed(13)
但是当我 运行 feed[:2]
添加单个 activity 后,我不断收到此错误:
<ipython-input-25-41b7cd0d0d8c> in <module>()
----> 1 feed[:2]
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in __getitem__(self, k)
303 try:
304 results = self.get_activity_slice(
--> 305 start, bound)
306 except StopIteration:
307 # There's nothing left, even though the bound is higher.
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in get_activity_slice(self, start, stop, rehydrate)
354 print 'line 350'
355 if self.needs_hydration(activities) and rehydrate:
--> 356 activities = self.hydrate_activities(activities)
357 return activities
358
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in hydrate_activities(self, activities)
332 activity_data = {a.serialization_id: a for a in activity_list}
333 print activity_data
--> 334 return [activity.get_hydrated(activity_data) for activity in activities]
335
336 def needs_hydration(self, activities):
/Users/home/venv/lib/python2.7/site-packages/stream_framework/activity.pyc in get_hydrated(self, activities)
42
43 '''
---> 44 activity = activities[int(self.serialization_id)]
45 activity.dehydrated = False
46 return activity
KeyError: 14929294667170000000001005L
我可以打印出 [<stream_framework.activity.DehydratedActivity object at 0x10e114e90>]
和 [u'14929294667170000000001005']
。
知道是什么原因造成的吗?
KeyError
堆栈跟踪中显示的密钥与 [u'14929294667170000000001005']
的打印表示之间存在类型不匹配
u'14929294667170000000001005'
是一个unicode字符串
而 14929294667170000000001005L
是 long
类型的整数。
键本身或您尝试用作查找键的值必须更改,以便类型相同。请注意,带或不带 L 后缀(表示 long
类型)的 int 都可以从 python dict
中检索值。简单演示:
>>> D = {14929294667170000000001005 : 'some value'}
>>> D[14929294667170000000001005]
'some value'
>>> D[14929294667170000000001005L]
'some value'
我正在尝试设置基本供稿:
from stream_framework.feeds.redis import RedisFeed
class PinFeed(RedisFeed):
key_format = 'feed:normal:%(user_id)s'
class UserPinFeed(PinFeed):
key_format = 'feed:user:%(user_id)s'
feed = UserPinFeed(13)
但是当我 运行 feed[:2]
添加单个 activity 后,我不断收到此错误:
<ipython-input-25-41b7cd0d0d8c> in <module>()
----> 1 feed[:2]
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in __getitem__(self, k)
303 try:
304 results = self.get_activity_slice(
--> 305 start, bound)
306 except StopIteration:
307 # There's nothing left, even though the bound is higher.
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in get_activity_slice(self, start, stop, rehydrate)
354 print 'line 350'
355 if self.needs_hydration(activities) and rehydrate:
--> 356 activities = self.hydrate_activities(activities)
357 return activities
358
/Users/home/venv/lib/python2.7/site-packages/stream_framework/feeds/base.pyc in hydrate_activities(self, activities)
332 activity_data = {a.serialization_id: a for a in activity_list}
333 print activity_data
--> 334 return [activity.get_hydrated(activity_data) for activity in activities]
335
336 def needs_hydration(self, activities):
/Users/home/venv/lib/python2.7/site-packages/stream_framework/activity.pyc in get_hydrated(self, activities)
42
43 '''
---> 44 activity = activities[int(self.serialization_id)]
45 activity.dehydrated = False
46 return activity
KeyError: 14929294667170000000001005L
我可以打印出 [<stream_framework.activity.DehydratedActivity object at 0x10e114e90>]
和 [u'14929294667170000000001005']
。
知道是什么原因造成的吗?
KeyError
堆栈跟踪中显示的密钥与 [u'14929294667170000000001005']
u'14929294667170000000001005'
是一个unicode字符串
而 14929294667170000000001005L
是 long
类型的整数。
键本身或您尝试用作查找键的值必须更改,以便类型相同。请注意,带或不带 L 后缀(表示 long
类型)的 int 都可以从 python dict
中检索值。简单演示:
>>> D = {14929294667170000000001005 : 'some value'}
>>> D[14929294667170000000001005]
'some value'
>>> D[14929294667170000000001005L]
'some value'