摘要:
现在工具不好用,用的pycharm自动同步,但对于git拉下来的新文件不能自动上传到linux,只有自己编辑过或者手动ctrl + s的文件才会自动同步。导致为了不遗漏文件,经常需要全量上传,速度非常慢。 由于经常需要在windows的pycharm上直接使用linux解释器,要快速测试,频繁在本机 阅读全文
摘要:
猴子补丁一般是用于修改三方包或官方包,也可以用来修改自己或者他人的代码。 但也可以用来修改python 语言内置的关键字。 本篇博客修改python最常用的内置print,使你使用print时候,自动打印出当前打印处的文件名和行号,并使用特殊的自创模板,使其在pycharm控制台中能够点击自动跳转到 阅读全文
摘要:
这是写得培训文档。代码例子在附件。 是经过深入考察 4个git项目里面,找出代码非常非常十分low、代码重复得吓人的的最本质原因。提炼出oop转化公式。 围绕附件中的4种代码写法思维来实现同一个任务,结合这4个代码来讲解造成的原因和转化公式。 我们公司有大约20个人用py,其中有计算机科班工作几年的 阅读全文
摘要:
减少return 减少传参。 主要是在调用上比以前强大很多,以前很怕操作时间,在一堆函数中传来传去。这个调用爽。 阅读全文
摘要:
统计目录下所有的代码个数和总行数。 阅读全文
摘要:
原版是上面这样,不能点击,修改后,直接点击链接可以跳转到代码对应地方。不用加很多print来确定代码运行了什么分支。 阅读全文
摘要:
基于官方的需要改版 1、改为有界,官方是吧所有任务添加到线程池的queue队列中,这样内存会变大,也不符合分布式的逻辑(会把中间件的所有任务一次性取完,放到本地的queue队列中,导致分布式变差) 2、直接打印错误。官方的threadpolexcutor执行的函数,如果不设置回调,即使函数中出错了, 阅读全文
摘要:
由于之前写得接口太多了,分为了多个app,每个app里面有几个接口。部署次数需要很多次,修改成部署一次,在不改变代码的情况下,不使用蓝图,最快的方式就是这样修改。 from werkzeug.wsgi import DispatcherMiddleware app = DispatcherMiddl 阅读全文
摘要:
这个日志没有依赖自己的其他包,复制即可运行,也可以从pypi网站上下载或者pip来安装这个日志。 1、日志内置了7种模板,其中模版4和模板5,可以实现点击日志跳转到指定文件指定行数的功能,史无前例的实现这种方式。 2、使用了ColorHandler作为默认的控制台显示日志,而不是使用官方的Stram 阅读全文
摘要:
更新 python万能消费框架,新增7种中间件(或操作mq的包)和三种并发模式。 框架目的是分布式调度起一切任何函数(当然也包括调度起一切任何方法)。 之前写的是基于rabbitmq的,作为专用的消息队列好处比redis的list结构好很多。但有的人还是强烈喜欢用redis,以及rabbitmq安装 阅读全文
摘要:
控制频率之前用的是线程池的数量来控制,很难控制。因为做一键事情,做一万次,并不是每次消耗的时间都相同,所以很难推测出到底多少线程并发才刚好不超过指定的频率。 现在在框架中加入控频功能,即使开200线程,也能保证1秒钟只运行10次任务。 里面的rabbitpy后来加的,然来是使用pika的,就框架本身 阅读全文
摘要:
假设fun函数被装饰器装饰了,name调用fun,就不是调用fun本身了,那么如何继续调用本身呢。使用fun_raw = fun.__wrapped__这样使用fun_raw就是调用没被装饰器修饰后的函数本身了。 阅读全文
摘要:
之前看网上都是清一色pika包的例子,就用的pika包,最大问题是非多线程安全,改为使用rabbitpy。大幅改善了pika多线程需要加锁,和外网推送延迟又不能开多线程导致推送慢的问题。 rabbitpy有个适配器,可以把rabbitpy包的channel适配成与pika包的channel的相同公有 阅读全文
摘要:
rabbitmq作为消息队列可以有消息消费确认机制,之前写个基于redis的通用生产者 消费者 并发框架,redis的list结构可以简单充当消息队列,但不具备消费确认机制,随意关停程序,会丢失一部分正在程序中处理但还没执行完的消息。基于redis的与基于rabbitmq相比对消息消费速度和消息数量 阅读全文
摘要:
维护一组浏览器,实现每分钟1000次查询。DriverPool使用变幻版只初始化一次的单例模式。维护每个浏览器的当前是否使用的状态。 不需要等待请求来了,临时开浏览器,开一个浏览器会耽误6秒钟。 可以在程序启动后,随便使用命令杀死slenium,,不怕被别人杀死,不需要重启程序就能保证长久正常运行。 阅读全文
摘要:
1、有时候使用设计模式,例如工厂方法模式,函数传的参数还需要一一根据条件传递到各个类里面去实例化或者其他原因,直接复制所有的参数看起来不太好,造成很多相同的行。 2、直接函数/方法中写**kwargs,那就不需要转化了,但写代码要抵制这样的写法,这样造成补全困难和使调用者不知道需要传递什么参数,必须 阅读全文
摘要:
记录一下使用clipboardData复制不成功。 1、定义一个按钮执行复制 阅读全文
摘要:
import timefrom app.utils_ydf import LogManagerlogger = LogManager('network_monitor').get_logger_and_add_handlers(log_filename='network_monitor.log')logger_templete7 = LogManager('network_monitor2')... 阅读全文
摘要:
1、web后台对大批量的繁重的io任务需要解耦使用分布式异步技术,否则会使接口阻塞,并发延迟,一般就选celery好了。此篇的取代主要是针对取代celery的worker模式。没有涉及到周期和定时模式。 2、对我来说celery提供了 分布式,任务路由,超时杀死,任务过期丢弃,任务限速,并发模型选择 阅读全文
摘要:
使用此方法基本上在测试环境可以用来代替jenkens构建docker了,部署速度上快很多倍。 写一个脚本拉取git,可以使用git包,也可以直接调用linux或者wndows的 命令来拉取git。 然后需要执行两条命令,每个部署任务都先执行拉取git,然后再启动主要程序。 配置如下: 阅读全文