ShannonAI / service-streamer

Boosting your Web Services of Deep Learning Applications.
Apache License 2.0
1.23k stars 186 forks source link

修改源代码支持sentinel出错 #49

Closed niaoyu closed 4 years ago

niaoyu commented 4 years ago

你好,由于对后端不熟悉,这里直接使用中文提问。

由于本repo使用的redis,为了保证工程上的高可用,一般会使用sentinel进行监控。这里使用了3个sentinel container,1个redismaster,2个redisslave。主要改动是,(26379是sentinel配置端口,正常执行下面命令可以获得正常的self._redis)

self._redis = Redis(host=self._redis_host, port=self._redis_port)
=>
sentinel = Sentinel([('sentinel', 26379)], socket_timeout=0.1)
self._redis = sentinel.master_for('master', socket_timeout=0.1)

使用的时候会直接报错

  File "/usr/src/app/service_streamer/service_streamer.py", line 42, in result
    raise TimeoutError("Task: %d Timeout" % self._id)
TimeoutError: Task: 3 Timeout

进一步尝试发现,如果kill掉run_redis_workers_forever,再重新拉起。才会有gpu server处理batch 的日志。

service_streamer.service_streamer - INFO - [gpu worker 268] run_once batch_size: 2 start_at: 1574327978.491865 spend: 2.0441946983337402

猜测是改动sentinel,造成的影响,无法获取真正的redis端口。请问怎么解决比较好啊?