烧瓶信号:为什么修改信号数据不好?

烧瓶文件说:

另请注意,信号旨在通知订户,不应鼓励订户修改数据

我想知道,为什么是这样?

我正在使用Flask-User库,并且我想在用户注册时为用户设置一些默认字段(例如,将displayname设置为等于用户名),然后更新数据库。 烧瓶-用户发送user_registered当用户注册信号。 为什么订阅这个信号并更新其中的db是一个坏主意?


这是一个过度的解决方案。 我想我是强大的Drupal / PHP开发人员。 到第7版的所有内容都是使用钩子信号(Flask)构建的。 当一切都建在钩子上时,该项目变得很糟糕。 这是一个快速的过程,但很危险。 信号被设计成用作观察者模式 ,它喜欢事件。 这是主要想法。 但是当我们能够更新上下文时,主题。 它喜欢连锁责任 。 主要问题是链条。 所以如果一个项目失败了,另一个人会收到错误的状态。 这是主要问题。 有时很难找到失败的罪魁祸首。 因为我们有来自不同主题的不同信号,这些修改了共同的范围。

你几乎可以在任何地方扩展,但你不应该改变数据。 要正确地扩展,您应该使用干净的OOP解决方案。

有时我们需要改变一些逻辑。 所以我们需要定义一个篮子,我们需要改变。 在Drupal 8中,我们使用依赖注入容器 - 服务。 服务在分开的文件中描述。 所以我们能够改变关系和注射。

有一个有趣的图书馆 - https://pypi.python.org/pypi/Flask-Injector。

链接地址: http://www.djcxy.com/p/22479.html

上一篇: Flask signals: why is it not ok to modify data on signal?

下一篇: Gmail API Users.messages: list