Keal's Blog

我的天空, 是雨是风

记一次python和数据库死锁问题的排查

背景故事 最近排查一个初步觉得是死锁的问题,之前在生产环境也是偶尔出现,排查过程中解决了此问题引起的另外的几个问题,可是死锁这个问题一直没有成功在本地环境复现, 并且代码中也未能找到可能产生死锁的点. 直到最近国外10几个生产环境也出现了这个类似的问题,因此这个问题突然重视起来.我也能专心排查这个问题. 业务场景 影院播放一个电影除了需要片源外,还需要一个叫kdm的文件, 此文件相当于...

Sqlalchemy add, flush and commit

Add 官方文档解释: Place an object in the Session. Its state will be persisted to the database on the next flush operation. Repeated calls to add() will be ignored. The opposite of add() is exp...

浅谈架构

为什么需要架构 网上有许多资料, 也有很多书籍提到这个. 个人总结大概是这样: 类似建筑的蓝图, 提供一个抽象的结构来检查是否能满足现在和未来的需求. 对开发来讲, 使模块清晰, 更方便的解决复杂的需求 对企业来讲, 更好的做风险管理和降低成本 常见架构 Software Architecture Patters 主要提到5种: 分层架构: 最常见,容易测试,...

进程,线程在Linux和Python

前言 进程和线程其实都是操作系统负责调度执行的, 操作系统是以进程为单位去分配空间和执行的 线程存活于进程之中, 同一个进程中的线程, 共享一个虚拟内存空间以及其中资源. 线程有自己的线程id Linux中的进程和线程 Linux并未像Windows那样提供CreateProcess和CreateThreadAPI来明确区分线程和进程的创建, 而是将线程和进程视为同一种东西,叫做Ta...

Python多进程下信号处理的问题

"python多进程"

问题 我们开发的系统中, 客户反应说有时候FTP传片失败. 重点: 有时候 FTP传输失败 排查 ​ 通过日志和代码排查, 发现是在本地做内容复制的时候, 会触发一个SIGTERM信号, 主进程中注册的信号处理函数针对这个信号会做出退出程序的处理, 导致FTP服务挂掉, 传片自然也失败. (这里奇怪的点是, 处理函数有关闭web服务, 但是执行时失败了) 服务概况 ...

Brief understanding of mass morality

"道德"

​ 这篇文章主要是上班路上想起来两件事: 一是王思聪频繁换女友甚至同时交往多个女友的情况下,并没有受到太多群众的道德批判. 二是柯震东说自己这几年过的很惨时, 网友却讽刺他, 并拿烈士,疫情下的护士之类的来对比. ​ 王思聪的情况让我觉得人们对于金钱权利的崇拜是要高过道德标准的. 人们对于身边的同辈人或者同等人(这里说同等人并非我认为人不平等, 而是人们普遍的通过金钱和权力来划分不同...

Go struct exported and unexported

"Go, struct"

基本原则 struct名称小写开头, 则此struct不会被导出,即不会被外部包使用 struct名称大写开头,则struct会被导出,但是内部只有是大写字母开头的字段名称被导出, 即小写字母开头的内部字段不会被导出 例外情况: struct的嵌套 1 2 3 4 5 6 7 8 9 // Horse能被导出, 虽然animal字段是小写,但是依然能够访问到其中的Speak...

New understanding of Go language

"Go, let's go"

Go简介 Go是google于2007年开始设计,在2009年推出, 是一种静态强类型, 编译型, 并发型语言 著名项目: Docker kubernetes Go 使用 最近正式开始做一些基于Golang的项目, 随便整理一下: 没有继承, 只有包含关系 ​ Go里没有其他语言中class的关键字,也就是说go没有类, go使用struct来实现类似类继承的功能...

我的新博客!

"Hello Blog"

分享 ​ 很久之前就想搭建一个”自己的博客”(现在也是基于github pages), 毕竟不管是专门的技术博客平台如CSDN之类的, 总觉得不够味儿. 后来得知了github pages的功能后又受限于前端技术栈的匮乏,导致体验感也很糟糕. 所以平时都只是直接本地写丢在印象笔记里给自己看.今天算是初步搭建了自己的blog, 算是终于在记录自己的方式上迈出了非常重要的一步. 因为: ​...