mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-09-01 01:46:16 +00:00
Merge pull request #1268 from paperless-ngx/bugfix-db-locked
Bugfix: Adds configuration for database timeout, fixing database locked error
This commit is contained in:
@@ -11,6 +11,7 @@ from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import DatabaseError
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.db.utils import OperationalError
|
||||
from django.dispatch import receiver
|
||||
from django.utils import termcolors
|
||||
from django.utils import timezone
|
||||
@@ -506,21 +507,28 @@ def add_to_index(sender, document, **kwargs):
|
||||
@receiver(django_q.signals.pre_enqueue)
|
||||
def init_paperless_task(sender, task, **kwargs):
|
||||
if task["func"] == "documents.tasks.consume_file":
|
||||
paperless_task, created = PaperlessTask.objects.get_or_create(
|
||||
task_id=task["id"],
|
||||
)
|
||||
paperless_task.name = task["name"]
|
||||
paperless_task.created = task["started"]
|
||||
paperless_task.save()
|
||||
try:
|
||||
paperless_task, created = PaperlessTask.objects.get_or_create(
|
||||
task_id=task["id"],
|
||||
)
|
||||
paperless_task.name = task["name"]
|
||||
paperless_task.created = task["started"]
|
||||
paperless_task.save()
|
||||
except OperationalError as e:
|
||||
logger.error(f"Creating PaperlessTask failed: {e}")
|
||||
|
||||
|
||||
@receiver(django_q.signals.pre_execute)
|
||||
def paperless_task_started(sender, task, **kwargs):
|
||||
try:
|
||||
if task["func"] == "documents.tasks.consume_file":
|
||||
paperless_task = PaperlessTask.objects.get(task_id=task["id"])
|
||||
paperless_task, created = PaperlessTask.objects.get_or_create(
|
||||
task_id=task["id"],
|
||||
)
|
||||
paperless_task.started = timezone.now()
|
||||
paperless_task.save()
|
||||
except OperationalError as e:
|
||||
logger.error(f"Creating PaperlessTask failed: {e}")
|
||||
except PaperlessTask.DoesNotExist:
|
||||
pass
|
||||
|
||||
@@ -529,8 +537,12 @@ def paperless_task_started(sender, task, **kwargs):
|
||||
def update_paperless_task(sender, instance, **kwargs):
|
||||
try:
|
||||
if instance.func == "documents.tasks.consume_file":
|
||||
paperless_task = PaperlessTask.objects.get(task_id=instance.id)
|
||||
paperless_task, created = PaperlessTask.objects.get_or_create(
|
||||
task_id=instance.id,
|
||||
)
|
||||
paperless_task.attempted_task = instance
|
||||
paperless_task.save()
|
||||
except OperationalError as e:
|
||||
logger.error(f"Creating PaperlessTask failed: {e}")
|
||||
except PaperlessTask.DoesNotExist:
|
||||
pass
|
||||
|
@@ -338,6 +338,13 @@ if os.getenv("PAPERLESS_DBHOST"):
|
||||
if os.getenv("PAPERLESS_DBPORT"):
|
||||
DATABASES["default"]["PORT"] = os.getenv("PAPERLESS_DBPORT")
|
||||
|
||||
if os.getenv("PAPERLESS_DB_TIMEOUT") is not None:
|
||||
_new_opts = {"timeout": float(os.getenv("PAPERLESS_DB_TIMEOUT"))}
|
||||
if "OPTIONS" in DATABASES["default"]:
|
||||
DATABASES["default"]["OPTIONS"].update(_new_opts)
|
||||
else:
|
||||
DATABASES["default"]["OPTIONS"] = _new_opts
|
||||
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
|
||||
|
||||
###############################################################################
|
||||
|
Reference in New Issue
Block a user