一些 Python 的 snippets
Published 8/22/2019
Modified 2/24/2020
Views 58
log 以天为单位分文件保存
以前我用的比较多的是 RotatingFileHandler
,这个根据文件大小进行分割。有的时候我们对文件大小限制并不大,而对日期更敏感一点。这个时候可以用官方库里面的 TimedRotatingFileHandler
。
from logging.handlers import TimedRotatingFileHandler
handler = TimedRotatingFileHandler(
logFileName, encoding='utf8',
when='midnight', atTime=time(4, 0, 0), # generate backup file at 4 am
backupCount=31)
缓存函数结果一段时间
Python 库里面有一个 @functools.lru_cache(maxsize=128, typed=False)
修饰器,可以缓存最近的maxsize
个结果。但是有的时候需要修饰的函数并不是一个纯函数,譬如其可能请求一个列表;但是我们对它的结果的即时性要求不高,这个时候可以考虑使用一个缓存将其结果缓存一段时间,以减少调用该函数的时间。
使用 cachetools
包,该包里面实现了该功能。需要注意的是对于异步函数需要使用 asyncache
进行修饰。
from cachetools import func as functools
@functools.ttl_cache(maxsize=128, ttl=600)
def doSomething(args):
pass
# async version
from asyncache import cached
from cachetools import TTLCache
@cached(TTLCache(maxsize=128, ttl=600))
async def asyncDoSomething(args):
pass
本作品采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
0 comments