supervisor遇到的坑

发布在 python

写几条自己用supervisor遇到的一些小坑

  1. Python 3 Wall的反派代表,一直不能使用python3安装
  2. 对中文输出支持奇差,估计是使用python2造成的,举个例子,假如你要在python2里面print输出一个unicode中文字符。我试了各种办法,均无解(和supervisor使用子进程运行程序的策略有关),好在使用logging模块输出中文居然没啥问题-_-,正式运行环境也是全部使用logging代替print
  3. 即使用python3,输出中文也会遇到问题,需要在配置文件添加environment=LANG="en_US.utf8", LC_ALL="en_US.UTF-8", LC_LANG="en_US.UTF-8"解决
  4. 写配置文件的时候一个变量不能配置多行,我一开始因为environment太长。写了2行,导致后面的没生效,折腾好久
  5. 修改supervisor配置文件后,如果配置文件错了,不会报错!而且supervisor没有工具能对配置文件的正确性进行检查,灰常操蛋啊!
  6. supervisor可以检查到异常自动重启并设置最大重启次数,可是有时候会造成无限重启这种情况。因为重启后立刻退出才会触发最大重启次数机制,假如程序一直是运行了十分钟自动退出。那么会造成无限重启,可以使用它的api写一个脚本监控这种情况,进行警告
1
2
3
4
5
6
7
8
9
10
11
import xmlrpc.client
def list_time(name: str, interval: int, times: int):
s = xmlrpc.client.ServerProxy('http://localhost:9001')
if s.supervisor.getProcessInfo(name).get('statename') != 'RUNNING':
return False
context = s.supervisor.readLog(0, 10 * 1024 * 100)
context = filter(lambda x: name in x and 'spawn' in x, context.splitlines())
context = map(lambda x: datetime.strptime(x[:19], '%Y-%m-%d %H:%M:%S'), context)
context = list(filter(lambda x: x + timedelta(minutes=interval) > datetime.now(), context))
return (len(context) > times) and len(context)

参考

也谈 Python 的中文编码处理

注释和共享

半自动刷网络课程

发布在 伪技术

刷一个网络课程,很常见的那种,播放视频统计观看时长。不过该系统比较弱,即使切换到别的页面一样也会计算时长。限制条件只是偶尔会出现一些问答题让视频暂停且一个视频播放完成后不会自动播放下一个视频。最开始是打算直接模拟发送http请求,不过后面感觉或许有坑就选了另外一种办法。讲课肯定是有声音的,用程序去捕获声音,如果五秒钟没有声音则认为有问答题出现或者该章节讲完了。

阅读全文

Flask路由机制

发布在 Flask

Flask帅气的Hello World示例让人印象深刻。其中使用装饰器的路由写法功不可没,甚至以前看过一个系列没那么神奇,讲了app.route。是的,它好像并没有那么神奇,我也来解析一下😆

阅读全文

Flask插件原理

发布在 Flask

Flask的插件还挺多,用过的都知道比如flask-sqlalchemy,安装的时候是使用pip install flask-sqlalchemy,使用的时候就成了from flask.ext.sqlalchemy import SQLAlchemy。使用的是flask.ext而不是flask_sqlalchemy。感觉还有点牛掰啊-_-,不过仅仅是看起来高大上,并没有什么卵用。在2016年4月13号正式被移出支持了,已经直接发出不建议使用的警告。本文还是来炒一下现饭,看看它背后的逻辑

阅读全文

tmux

发布在 linux

自screen之后tmux早已身名远扬,然而这个东西对于一般人来说好像并没有什么卵用,好像还比较麻烦。这也是我以前的看法。主要原因就是iterm2已经非常完美了。iterm2的好用一定程度上掩盖了tmux的光辉。因为iterm2是开箱即用,tmux不配置不一定用的舒服。直到某一天我在youtube上看到了2个视频,我知道我该改改了:)
gotbletu_tmux
我个人也是刚入门,下面介绍一些基本知识,希望对读者有所帮助.

阅读全文

fasd和fzf

发布在 linux

来2个日常使用命令行工具玩一玩,前一个是目录快速跳转,后一个是使用curses模糊查找

阅读全文
作者的图片

ficapy

author.bio


author.job


广东深圳