client online 监听
Posted on
Edited on
用户状态监测
根据client的ping消息,监听用户状态
分时采集ping 消息
每隔5S,采集10S内的ping消息
1 | time_now, ms_delta, listen_list = int(time.time()), 0, [] |
这里面有一个小技巧,采集10S内的ms,可以用时间差作为循环控制条件
差值思想,获取未ping的客户端(下线状态)
上述步骤获取当前10S内的ping消息,online_list
关键:通过redis获取上次前10S内的ping消息,last_online
- 如果last_online为空,说明当前offline_list不存在。将当前的online_list存入到redis,并作为下次的last_online
1
2
3
4
5
6
7
8
9
10
11cache_key = ""
if not value_list:
redis_client.delete(cache_key)
with redis_client.pipeline() as pipe:
pipe.multi()
pipe.delete(cache_key)
pipe.sadd(cache_key, *value_list)
pipe.expireat(cache_key, expired_at)
pipe.execute() - 如果last_online不为空,则当前不在线状态为:
offline_list = last_online - online_list
kafka-python debug log
Posted on
Edited on
python禁掉kafka debug日志
django 中使用kafka,但kafka 的debug日志会无限输出到日志文件中,非常头痛。
1 | INFO 2022-07-29 08:46:51,544 0cd0ec8c3b57480093f54a8907cb2a63 [base._handle_group_coordinator_response line:694] Discovered coordinator coordinator-0 for group g1 |
根本原因在于,kafka的python包中 logger = logging.getLogger("kafka")
如果在django 的setting中没有定义 kafka 的logger,那会直接输出到 ROOT中。
解决方法也很简单,在setting的logging配置中配置下 kafka logger
1 | "loggers": { |
或者
1 | logging.getLogger("kafka").setLevel(logging.WARNING) |
日志level,看需求,一般是INFO,不像看到相关的kafka任何信息直接使用ERROR
nginx log tar
Posted on
Edited on
shell script
1 | #!/bin/bash |
nginx openresty
Posted on
Edited on
nginx web page 404
Posted on
Edited on
linux close_wait
Posted on
Edited on
GitLab Community Edition
Posted on
Edited on
Let's Encrypt SSL证书
Posted on
Edited on
django-docker镜像实践
Posted on
Edited on