Fix postgresql reconnection #2071

pull/2076/head
Marian Moravcik 2 years ago
parent 2acf2451b4
commit 2e8203f0d4

@ -1,24 +1,22 @@
# -*- coding: utf-8 -*-
import logging
import os
import ast
import atexit
import json
import ast
import logging
import os
import time
from datetime import datetime
from dogpile.cache import make_region
from peewee import Model, AutoField, TextField, IntegerField, ForeignKeyField, BlobField, BooleanField, BigIntegerField, \
DateTimeField
from playhouse.sqliteq import SqliteQueueDatabase
DateTimeField, OperationalError, PostgresqlDatabase
from playhouse.migrate import PostgresqlMigrator
from playhouse.migrate import SqliteMigrator, migrate
from playhouse.shortcuts import ThreadSafeDatabaseMetadata, ReconnectMixin
from playhouse.sqlite_ext import RowIDField
from playhouse.sqliteq import SqliteQueueDatabase
from dogpile.cache import make_region
from utilities.path_mappings import path_mappings
from peewee import PostgresqlDatabase
from playhouse.migrate import PostgresqlMigrator
from .config import settings, get_array_from
from .get_args import args
@ -29,14 +27,21 @@ postgresql = settings.postgresql.getboolean('enabled')
region = make_region().configure('dogpile.cache.memory')
if postgresql:
class ReconnectPostgresqlDatabase(ReconnectMixin, PostgresqlDatabase):
reconnect_errors = (
(OperationalError, 'server closed the connection unexpectedly'),
)
logger.debug(
f"Connecting to PostgreSQL database: {settings.postgresql.host}:{settings.postgresql.port}/{settings.postgresql.database}")
database = PostgresqlDatabase(settings.postgresql.database,
database = ReconnectPostgresqlDatabase(settings.postgresql.database,
user=settings.postgresql.username,
password=settings.postgresql.password,
host=settings.postgresql.host,
port=settings.postgresql.port,
autoconnect=True
autocommit=True,
autoconnect=True,
)
migrator = PostgresqlMigrator(database)
else:
@ -62,6 +67,7 @@ class UnknownField(object):
class BaseModel(Model):
class Meta:
database = database
model_metadata_class = ThreadSafeDatabaseMetadata
class System(BaseModel):

Loading…
Cancel
Save