Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用流框架为用户创建活动_Python_Redis_Stream Framework - Fatal编程技术网

Python 使用流框架为用户创建活动

Python 使用流框架为用户创建活动,python,redis,stream-framework,Python,Redis,Stream Framework,我正在尝试设置流框架,而不是更新的。我已经正确地设置了Redis服务器和环境,我面临的问题是为用户创建活动 我一直在尝试创建活动,但它给了我一条错误消息,如下所示: 。。。 文件“/Users/../stream\u framework/activity.py”,第110行,序列化\u id 如果self.object\u id>=10**10或self.verb.id>=10**3: AttributeError:“int”对象没有属性“id” 这是密码 我认为文档中缺少了一些东西,或者我做

我正在尝试设置流框架,而不是更新的。我已经正确地设置了Redis服务器和环境,我面临的问题是为用户创建活动

我一直在尝试创建活动,但它给了我一条错误消息,如下所示:

。。。
文件“/Users/../stream\u framework/activity.py”,第110行,序列化\u id
如果self.object\u id>=10**10或self.verb.id>=10**3:
AttributeError:“int”对象没有属性“id”
这是密码


我认为文档中缺少了一些东西,或者我做错了什么。如果有人能帮助我使流框架正常工作,我将不胜感激。

文档不一致。传递给活动的
动词
应该是的子类(一个?*)。退房并离开

以下内容将修复您发布的错误:

来自stream\u framework.activity导入活动
从stream_framework.feeds.redis导入RedisFeed
从stream_framework.verbs导入寄存器
从stream_framework.verbs.base导入谓词
类PinFeed(RedisFeed):
key\u format='feed:normal:%(用户id)s'
类UserPinFeed(PinFeed):
key\u format='feed:user:%(user\u id)s'
类别针(动词):
id=5
不定式='pin'
过去时='pinted'
寄存器(Pin)
feed=UserPinFeed(13)
活动=活动(
演员=13,
动词=别针,
对象=1,
)
feed.add(活动)
我很快地浏览了一下,它看起来像是为
actor
object
传递
int
s应该可以工作。但是,这些参数也可能在文档中过时


*测试以
动词
的形式在类中通过。但是,
动词
基类具有方法
serialize
\uuuu str\uuuu
,只有当您拥有此类的对象时才能有意义地调用这些方法。所以我仍然不确定这里需要什么。在当前状态下,框架似乎从未调用这些方法,因此类仍然可以工作,但我觉得作者最初打算传递实例。

在great by的帮助下,我能够部分解决它。由于不再维护该包,该包将安装最新的Redis client for python,这会产生太多问题,因此通过安装(如果使用stream-framework-1.3.7),应该可以修复该问题

我还想添加一个完整的指南,以正确地向用户提要添加活动

要点:

  • 如果未使用,请确保先插入活动,然后再使用
    feed.insert\u activity(activity)
    方法将其添加到用户

  • 如果使用
    feed[:]
    获取feed,会抛出如下错误:

    文件“/Users/../stream\u framework/activity.py”,第44行,在get\u-hydrated中
    活动=活动[int(self.serialization\u id)]
    密钥错误:16223026351730000000001005L
    
    然后,您需要使用密钥格式为该用户清除数据。在我的情况下,密钥是
    feed:user:13
    对于用户13,使用
    DEL feed:user:13
    删除它,如果这不能解决问题,那么您可以
    FLUSHALL
    ,这将删除Redis中的所有内容

示例代码:

来自stream\u framework.activity导入活动
从stream_framework.feeds.redis导入RedisFeed
从stream_framework.verbs导入寄存器
从stream_framework.verbs.base导入谓词
类PinFeed(RedisFeed):
key\u format='feed:normal:%(用户id)s'
类UserPinFeed(PinFeed):
key\u format='feed:user:%(user\u id)s'
类别针(动词):
id=5
不定式='pin'
过去时='pinted'
寄存器(Pin)
feed=UserPinFeed(13)
打印(提要[:])
活动=活动(
演员=13,
动词=别针,
对象=1)
feed.insert_活动(活动)
活动\u id=feed.add(活动)
打印(活动标识)
打印(提要[:])

你没有错,但问题出在演员身上,你的代码给了我同样的错误。请尝试运行您的代码,或者它是否适用于您?。ThanksI无法测试我的代码,因为我既没有安装
stream\u框架
,也没有安装redis。您发布的最初错误是活动无法访问
动词.id
,现在您说错误与
参与者有关。你能把修正动词后出现的错误添加到你的问题中吗?安装起来很简单。。。此外,发布一个你自己不知道是否有效的答案也是一种不好的做法。感谢分享,我已经测试了你的代码,我认为我已经发现了问题的主要问题,你的代码确实是正确的。经过彻底调查后,我会分享同样的东西。
from stream_framework.activity import Activity
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)
print(feed)

activity = Activity(
    actor=13, # Thierry's user id
    verb=1, # The id associated with the Pin verb
    object=1, # The id of the newly created Pin object
)

feed.add(activity) # Error at this line