gpt4 book ai didi

python - 完成的一些事件在 python 中创建另一个事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:33 24 4
gpt4 key购买 nike

我目前正面临一个难题。

假设我有2个以上的事件,比如:

  • (A):用户做一个 Action A
  • (B):用户做一个 Action B

每个事件都是相互独立的,可以通过用户的网络请求触发,我不知道它们的顺序(哪个先发生)。

然后,当 A 和 B 都发生时,它将触发另一个名为 C 的事件:A + B => C

有没有任何编程模型或库可以使它在 Python 中更容易,我更喜欢纯 Python,因为我正在使用 GAE。

我已经考虑过使用 blinker 和一些附加代码,但它仍然有很多工作要做。

谢谢,

最佳答案

由于 blinker 是纯 Python,所以在 GAE 上使用它应该是非常可行的。

因此,当收到两个 其他信号时,您会遇到触发信号的问题——一个和gate,我相信blinker 不提供-- 绝对不是当输入信号可以在时间和空间上“很好地分离”时。

所以我会定义一个模型,例如:

class AndGate(ndb.Model):
a_received = ndb.BooleanProperty()
b_received = ndb.BooleanProperty()

使用 users.get_user().userid() 作为其实体键中的 ID。

然后我们将有 signal(A).connect(got_a)signal(B).connect(got_b) with

def got_a(*_):
k = ndb.Key('AndGate', users.get_user().userid())
ag = k.get()
if ag is None:
AndGate(a_received=True, b_received=False, key=k).put()
return
if ag.b_received:
k.delete()
signal('C').send('')
else:
ag.a_received = True
ag.put()

这看起来有点多余,只有两个信号,我正在考虑带有 N>2 信号的门,但如果这对您来说不是问题,您肯定可以简化它。

是的,还有工作要做——如果需要的话,原子事务,周期性的“垃圾收集”任务寻找gates,其中只接收到一个信号并且比某个阈值 X 早并报告它们,等等。但是,如果我正确理解您的规范,它对我来说似乎并没有“多大的作用”。

关于python - 完成的一些事件在 python 中创建另一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28270890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com