Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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 Django接收机最佳实践_Python_Django_Optimization_Signals - Fatal编程技术网

Python Django接收机最佳实践

Python Django接收机最佳实践,python,django,optimization,signals,Python,Django,Optimization,Signals,我正在决定如何写我的收信人。我可以执行以下任一操作: 在一个接收器中为一个信号投入一切 将它们分离为多个接收器,一个信号用于 组织宗旨 我的问题是:这有什么不同吗?如果是,原因是什么? 备选案文1: 备选案文2: 选项1显然更加枯燥,但选项2允许更多的组织性和可读性,因此它们都有自己的优势。但真正的问题是,这真的很重要吗?最终它们都会起作用。然而,随着时间的推移,您可能会发现dou_-it_-all变得相当大,最终您会将其拆分为多个函数: @receiver(some_signal) def d

我正在决定如何写我的收信人。我可以执行以下任一操作:

  • 在一个接收器中为一个信号投入一切
  • 将它们分离为多个接收器,一个信号用于 组织宗旨
  • 我的问题是:这有什么不同吗?如果是,原因是什么?

    备选案文1: 备选案文2:
    选项1显然更加枯燥,但选项2允许更多的组织性和可读性,因此它们都有自己的优势。但真正的问题是,这真的很重要吗?最终它们都会起作用。然而,随着时间的推移,您可能会发现
    dou_-it_-all
    变得相当大,最终您会将其拆分为多个函数:

    @receiver(some_signal)
    def do_it_all(sender, **kwargs):
        do_something_for_table_one(sender, **kwargs)
        do_something_for_table_two(sender, **kwargs)
        do_something_for_table_three(sender, **kwargs)
    
    在这种情况下,它与第二种选择没有什么不同


    所以我认为第二种方法最终会带来更干净的代码。这也意味着您可以单独测试每个接收器。

    选项1和选项2之间有处理时间差吗?@RyanSaxe这个问题似乎回答了以下问题:
    @receiver(some_signal)
    def do_it_for_one(sender, **kwargs):
        # do something for table 1
    @receiver(some_signal)
    def do_it_for_two(sender, **kwargs):
        # do something for table 2
    @receiver(some_signal)
    def do_it_for_three(sender, **kwargs):
        # do something for table 3
    #...
    
    @receiver(some_signal)
    def do_it_all(sender, **kwargs):
        do_something_for_table_one(sender, **kwargs)
        do_something_for_table_two(sender, **kwargs)
        do_something_for_table_three(sender, **kwargs)