我正在寻找一种Python方法来进一步重构event_stream()下面的功能。这是我编写的用于尝试python的python flask Web应用程序的简化和抽象。
该函数是一个生成器,具有无限循环,可检查多个对象(当前以dict形式实现)是否有更改(在应用程序中的其他位置进行)。
如果对象已更改,则会产生一个事件,调用者函数sse_request()将使用该事件来创建服务器端事件。
def event_stream():
parrot_old = parrot.copy()
grail_old = grail.copy()
walk_old = walk.copy()
while True:
print("change poller loop")
gevent.sleep(0.5)
parrot_changed, parrot_old = check_parrot(parrot_new=parrot, parrot_old=parrot_old)
if parrot_changed:
yield parrot_event(parrot)
grail_changed, grail_old = check_grail(grail_new=grail, grail_old=grail_old)
if grail_changed:
yield grail_event(grail)
walk_changed, walk_old = check_walk(walk_new=walk, walk_old=walk_old)
if walk_changed:
yield walk_event(walk)