摘要:
1、在linux安装python文章很多,但是步骤很多,没搞好还会把yum命令弄坏,要修复。这件事就发生在我身上,准确说不是我造成的,是总监自己安装python造成yum损坏的,然后需要运维去百度修改。 附上修改yum被python损坏的修复的连接 https://www.cnblogs.com/t 阅读全文
摘要:
点击右键在新标签打开图片,放大查看 celery配置,celery3和4的各项配置名字有较大变化,不是简单的小写就可以,具体可以看celery官网。感觉4的配置更能代表参数的意义,3的配置啥都叫celery,在意图上没有4好。celery4可以使用3的配置,但各项配置要保持一致性不能一下用3一下用4 阅读全文
摘要:
1、所有书中都没有把猴子补丁作为一种设计模式来看待。因为设计模式的模式的命名是根据java中提炼出来的,语言方式决定了java绝对不会有也不需要有这种操作,不存在的。那自然设计模式不会包括猴子补丁模式。 2、根据百度百科介绍,设计模式(Design pattern)代表了最佳的实践,通常被有经验的面 阅读全文
摘要:
0、此框架只能用于爬虫,由框架来调度url请求,必须按照此方式开发,没有做到类似celery的通用分布式功能,也不方便测试。可以使用另外一个,基于函数式编程的,调度一切函数的分布式框架,做到了兼容任何新老代码,满足任何需要分布式的场景。 一个分布式爬虫框架。比scrapy简单很多,不需要各种item 阅读全文
摘要:
前者是方法,后者是函数。oop和opp区别的经典体现。好好领会,就能知道什么时候写类什么时候写函数好。 阅读全文
摘要:
1、官方logging包的SMTPHandler不支持ssl的邮箱,修改成兼容ssl以支持大部分国内邮箱。 2、增加一个频率控制的参数,比如要设置一个报警邮件,异常时候通知我们,但假设1分钟内异常几千次,那是不需要发几千次相同日志的,handler自带频率限制,使用的时候一秒钟调用运行logger. 阅读全文
摘要:
访问者模式 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。 介绍 意图:主要将数 阅读全文
摘要:
之前已经发过单独的缓存,这也算一种模式。 阅读全文
摘要:
迭代器模式 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 介绍 意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 阅读全文
摘要:
中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 介绍 意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从 阅读全文
摘要:
备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并 阅读全文
摘要:
class QueueObject(): def __init__(self, queue, auto_get=False): self._queue = queue self.object = self._queue.get() if auto_get else None def __enter__(self): if... 阅读全文
摘要:
设计模式上大的方向上分继承和组合,就是类模式和对象模式。此篇的组合模式非继承和组合概念中的组合。桥接 策略 代理 装饰者都用了组合,此组合非彼组合。 组合模式 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象, 阅读全文
摘要:
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实 阅读全文
摘要:
1、默认是无界队列,如果生产任务的速度大大超过消费的速度,则会把生产任务无限添加到无界队列中,这样一来控制不了生产速度,二来是会造成系统内存会被队列中的元素堆积增多而耗尽。 2、改写为有界队列 这个很容易测试验证,消费函数里面来加个time.sleep,如果使用ThreadPoolExecutor会 阅读全文
摘要:
1、一切数据库操作最好使用内网连接, 2、使用批量操作接口操作数据库,而不是多线程频繁操作单条数据 3、如果python进程的cpu使用率达到100%了,需要开启多进程。java单个进程cpu使用率在32核处理器上可以达到3000%以上,python单个进程职高只能100%,要想加速必须修改代码使用 阅读全文
摘要:
1、一些装饰器,可以减少重复编写。比较常用的。 用的时候函数上面加上装饰器就可以。这是一些装饰器,加在函数或者方法上,减少了很多重复代码。 除此之外工作中也用一些mixin类大幅减少代码。 2、都是常规的,有带参数和不带参数的装饰器。其中where_is_it_called装饰器比较复杂一点,只要函 阅读全文
摘要:
如下supervisor的进程的comand配置参数只能写一个命令 1、要执行多条命令,可以写个sh文件包含多条命令,然后sh -x xxxx.sh,但这样又多了一个文件, 2、把所有命令放在字符串,然后用eval来执行,这样在shell窗口可以执行,但放在supervisor报找不到eval命令。 阅读全文
摘要:
1、python mysql redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例化了一个新的Session类实例,只是看起来是调用函数,要想精确控制使用,直接使用requests g 阅读全文
摘要:
1、redis mongodb mysql的python包都提供了批量插入操作,但需要自己在外部对一个例如1000 001个任务进行分解成每1000个为1个小批次,还要处理整除批次数量后的余数,如果做一次还可以,如果是很多任务多要这样做,有点麻烦。 例如redis的,mongo的也一样,需要在外部自 阅读全文