如何不使用multiprocessing模块延长Pub/Sub的acknowledgment deadline时长
关于无需多进程模块修改Pub/Sub确认截止时间的方案咨询
我目前正按照官方文档说明修改Pub/Sub的acknowledgment deadline(消息确认截止时间),但使用多进程(multiprocessing)模块实现时存在明显问题:部分常用库在多进程环境中使用需要做特殊适配,典型场景如下:
- 无法正常使用psycopg2连接池,要么每次数据库操作都新建连接,要么只能从主线程传递连接
- logging日志模块需要搭配
multiprocessing.Queue和QueueListener做特殊适配,才能在多进程环境下正常输出日志 - 甚至GCP存储客户端也需要在每个子进程内部单独实例化,这种实现方式的研发和运行成本都不理想
请问有没有不需要使用多进程模块就能修改acknowledgment deadline时间的替代方案?
补充说明1
- 多进程场景下,如果业务逻辑用到psycopg2,每次数据库操作都新建连接的开销很高,完全不符合生产环境的性能要求
- 谷歌云存储客户端也要求在子进程的目标函数内部实例化,同样存在不必要的资源开销。我们的业务场景需要高频执行数据库操作和云存储读写,官方文档提及的基于多进程修改ack deadline的方案适配成本过高,所以想寻找更轻量化的替代方案。
补充说明2
我当前基于多进程的实现(拉取消息并更新acknowledgment deadline时间)已经托管到开源代码仓库,可参考逻辑复用。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

