我正在运行我的django
应用程序,该应用程序从websocket API获取数据并将其存储在我的PostgreSQL
以下是代码的一部分:
class MyWebsocketClient:
.
.
def process_message(self, msg):
# Get msg from websocket server forever (until I force to quit the program)
self.data_buffer.append(msg)
if len(self.data_buffer) > 3000:
pool = Pool(cpu_count() * 2 // 3)
pool.map_async(store_data, self.data_buffer)
self.data_buffer = []
def store_data(data_buffer):
BinanceTick.objects.create(
field1=self.data_buffer['t'],
field2=self.data_buffer['p'],
field3=self.data_buffer['q'],
)
这种方法很平行。
但是当我尝试在其他界面(例如jupyter
或django-shell-plus
)中查询同一个数据库时,发生了错误:
OperationalError: FATAL: sorry, too many clients already
FATAL: sorry, too many clients already
为什么会这样?以下是我能想到的:
即使在完成任务后,每个Pool
仍与DB建立连接
我应该添加pool.close()
还有什么
主要问题是什么?