flock文件锁解决crontab脚本重复执行问题

背景

  • 在Linux系统使用crontab配置一个定时任务后,出现一种情况,如果我设置的crontab任务时间是每隔1分钟执行一次任务脚本,但是这个脚本执行时间超过了1分钟,比如2分钟,这时系统会再执行任务。导致两个相同的任务在执行。这种情况下可能会出现一些并发问题,严重时会导致出现脏数据/性能瓶颈的恶性循环。

    Read More

macOS Mojave 10.14.6 App Store无法下载和更新应用的解决办法

MacBookPro 还停留在macOS Mojave 10.14.6版本。上周更新2020-007安全更新后,出现在App Store中无法下载和更新应用的情况。主要表示就是:点击安装或者更新时,一直转圈,没有任何其他反应。期间尝试了各种办法,重登录App Store、重启macOS都没作用。

原本打算升级至macOS Big Sur 11.2.1看看能否解决这个问题,不过想到之前都是用中文搜索的解决办法,所以打算再试试用英文从谷歌中看看能否找到解决办法。事实证明这个是有效的,确实找到了解决办法。这次也记录一下。

Read More

使用venv创建python3虚拟环境

python3虚拟环境

首先强烈推荐大家使用python3提供的虚拟环境进行依赖管理,这样的话,每个项目都有自己独立的依赖环境。避免了不同项目使用同一个依赖的不同版本而导致的冲突。

不使用虚拟环境

如果不使用虚拟环境,那么所有项目依赖的包都会存放在一起,这也是以前包的管理方式,好处是用到相同的包不需要重复下载,然而更大的坑是如果以后其他项目用到了同样包的不同版本,就很难搞了;
比如在开发A项目时使用了最新的1.1版本的flask框架,开发完毕并上线正常运行。

Read More

python装饰器的wraps作用

Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring。

Read More