摘要: 简单实现了一个在函数执行出现异常时自动重试的装饰器,支持控制最多重试次数,每次重试间隔,每次重试间隔时间递增。 最新的代码可以访问从github上获取 https://github.com/blackmatrix7/matrix-toolkit/blob/master/toolkit/retry.p 阅读全文
posted @ 2017-08-24 21:50 BlackMatrix 阅读(5061) 评论(2) 推荐(0) 编辑
摘要: 描述符可以细分为覆盖型描述符与非覆盖型描述符。 可以按如下规则区分它们: 实现 __set__ 方法的类,称之为“覆盖型描述符” 没有实现 __set__ 方法的类,但实现了__get__方法的类,称之为“非覆盖型描述符” 同时实现 __set__ 和 __get__ 方法的类,通常称之为“强制描述 阅读全文
posted @ 2017-08-17 14:35 BlackMatrix 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 因为描述符本身可以接管实例属性的访问,利用这个特点,可以使用描述符来实现一些实例属性的类型检查工作。 先定义一个描述符 Point,用于管理坐标信息。 定义一个Address类,及类属性home,home接收一个坐标信息 实例化Address,并对实例属性进行赋值 第一次,赋值给home一个正确的坐 阅读全文
posted @ 2017-07-14 08:57 BlackMatrix 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 描述符通过描述符协议实现,任何实现或部分实现以下方法的类,都可以作为描述符使用。 __get__ 方法接收三个参数:self为描述符实例自身; instance指访问属性所属的实例;owner指描述符实例附加到的类。 __set__方法的前两个参数于__get__方法相同,第三个参数value为需要 阅读全文
posted @ 2017-07-13 15:46 BlackMatrix 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 在开始正文之前,需要了解下Python的绑定方法(bound method)和非绑定方法。 简单做个测试: 定义一个类,类中由实例方法、静态方法和类方法。 逐个测试,测试的结果在注释说说明。 接着尝试把一个函数,绑定到类或者实例上。 第一种方法,直接将函数赋值给类。 上面这种方法,存在一些局限性。比 阅读全文
posted @ 2017-07-01 21:17 BlackMatrix 阅读(888) 评论(0) 推荐(0) 编辑
摘要: 早上在opensuse安装pycurl,一直出现如下错误: 经过查询后,了解到需要先安装 libcurl-devel 执行以下命令解决: 接着重新安装pycurl: pip uninstall pycurl 先卸载之前安装的,如果没有安装成功就不要卸载了执行 export PYCURL_SSL_LI 阅读全文
posted @ 2017-06-30 09:27 BlackMatrix 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 通常来说,实现上下文管理器,需要编写一个带有__enter__和 __exit__的类,类似这样: 然而,在contextlib模块中,还提供了@contextmanager装饰器,将一个生成器函数当成上下文管理器使用,上面的代码在大部分,是与下面的代码等效的。 本文的list_transactio 阅读全文
posted @ 2017-06-28 23:09 BlackMatrix 阅读(2502) 评论(0) 推荐(0) 编辑
摘要: python 3 之后,都是统一适用format对字符串进行格式化。 通常情况是这样的 如果希望格式化后的字符串还包含{}占位符,那么就需要这么写 当一个占位符再次被{}括住之后,这个占位符就不会生效,字符串格式化之后,还会保留占位符{article_id}。 这种适合字符串需要二次格式化的情况。 阅读全文
posted @ 2017-06-21 10:20 BlackMatrix 阅读(1116) 评论(0) 推荐(0) 编辑
摘要: 记录下Sqlalchemy遇到的问题,不定时更新。 设置主键为非自增 sqlalchemy 在sql server中默认主键是自增的,如果在数据库设置的主键不是自增的,这个时候插入就会出现异常: 提示does not have the identity property 这个时候需要在主键中设置au 阅读全文
posted @ 2017-06-18 01:09 BlackMatrix 阅读(2975) 评论(0) 推荐(0) 编辑
摘要: 做个笔记,记录下使用celery踩过的坑,不定期更新。 warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED)) 我用的是Flask,所以在Flask的配置文件 confg.py 中,设置好CELERY_ACCEPT_CONTENT这个属性即可。 阅读全文
posted @ 2017-06-17 22:29 BlackMatrix 阅读(1346) 评论(0) 推荐(0) 编辑