私はdjangoでWebサーバーを構築しました。Django:データベースに新しく接続する方法
タスクを実行するスレッドを使用して、クライアントからデータベースに送信されたデータを保存します。
while True: ... try: self.dbTarget, created = ClientMonitor.objects.get_or_create(Machine_code=own_MachC) data = self.workQueue.get() #from client sent self.dbTarget.setValue(data) #Custom method assigning self.dbTarget.save() #django ORM except InterfaceError as ee: pass
スレッドが長時間実行されるが、それは8時間のタイムアウトとしてMySQLサーバの切断ので、久しぶりにInterfaceErrorを除く外になります。
Especially it can not auto-reconnect to the db. Creating a new thread will be OK, but it will increase resource occupation.
だから私は接続が同じスレッドに閉じたときにDBを再接続します。また、Djangoはそれぞれのリクエストに新しい接続を取得します。
同じスレッドでデータベースに新しく接続する方法は? ありがとうございました!
私は 'InterfaceError 'をシミュレートするために' connection.connection.close() 'を呼び出すことができますが、これは異なるかもしれません。 – Mix