Skip to content

Commit

Permalink
[Fixes #4813] Removing a layer is broken - Celery error (#4817)
Browse files Browse the repository at this point in the history
  • Loading branch information
Alessio Fabiani authored and capooti committed Sep 4, 2019
1 parent 257b31d commit 8afb793
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 32 deletions.
8 changes: 4 additions & 4 deletions geonode/documents/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from os import access, R_OK
from os.path import isfile

from celery.app import shared_task
from geonode.celery_app import app
from celery.utils.log import get_task_logger

from geonode.documents.models import Document
Expand All @@ -34,7 +34,7 @@
logger = get_task_logger(__name__)


@shared_task(bind=True, queue='update')
@app.task(bind=True, queue='update')
def create_document_thumbnail(self, object_id):
"""
Create thumbnail for a document.
Expand Down Expand Up @@ -87,13 +87,13 @@ def create_document_thumbnail(self, object_id):
logger.debug("Thumbnail for document #{} created.".format(object_id))


@shared_task(bind=True, queue='cleanup')
@app.task(bind=True, queue='cleanup')
def delete_orphaned_document_files(self):
from geonode.documents.utils import delete_orphaned_document_files
delete_orphaned_document_files()


@shared_task(bind=True, queue='cleanup')
@app.task(bind=True, queue='cleanup')
def delete_orphaned_thumbnails(self):
from geonode.base.utils import delete_orphaned_thumbs
delete_orphaned_thumbs()
4 changes: 2 additions & 2 deletions geonode/geoserver/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
#
#########################################################################

from celery.app import shared_task
from geonode.celery_app import app
from celery.utils.log import get_task_logger

from .helpers import gs_slurp

logger = get_task_logger(__name__)


@shared_task(bind=True, queue='update')
@app.task(bind=True, queue='update')
def geoserver_update_layers(self, *args, **kwargs):
"""
Runs update layers.
Expand Down
16 changes: 8 additions & 8 deletions geonode/layers/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,24 @@

"""celery tasks for geonode.layers."""

from celery import shared_task
from geonode.celery_app import app
from celery.utils.log import get_task_logger

from geonode.layers.models import Layer

logger = get_task_logger(__name__)


@shared_task(bind=True,
name='geonode.layers.tasks.update.delete_layer',
queue='cleanup',
autoretry_for=(Layer.DoesNotExist, ),
retry_kwargs={'max_retries': 5, 'countdown': 5})
@app.task(bind=True, queue='cleanup', expires=300)
def delete_layer(self, layer_id):
"""
Deletes a layer.
"""
layer = Layer.objects.get(id=layer_id)

try:
layer = Layer.objects.get(id=layer_id)
except Layer.DoesNotExist:
return

logger.info('Deleting Layer {0}'.format(layer))
layer.delete()
return True
5 changes: 2 additions & 3 deletions geonode/maps/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,19 @@

"""celery tasks for geonode.maps."""

from celery.app import shared_task
from geonode.celery_app import app
from celery.utils.log import get_task_logger

from geonode.maps.models import Map

logger = get_task_logger(__name__)


@shared_task(bind=True, queue='cleanup', expires=300)
@app.task(bind=True, queue='cleanup', expires=300)
def delete_map(self, object_id):
"""
Deletes a map and the associated map layers.
"""

try:
map_obj = Map.objects.get(id=object_id)
except Map.DoesNotExist:
Expand Down
6 changes: 3 additions & 3 deletions geonode/qgis_server/tasks/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import socket

import requests
from celery import shared_task
from geonode.celery_app import app
from requests.exceptions import HTTPError


Expand All @@ -39,7 +39,7 @@
logger = logging.getLogger(__name__)


@shared_task(
@app.task(
name='geonode.qgis_server.tasks.update.create_qgis_server_thumbnail',
queue='update',
autoretry_for=(QGISServerLayer.DoesNotExist, ),
Expand Down Expand Up @@ -109,7 +109,7 @@ def create_qgis_server_thumbnail(instance, overwrite=False, bbox=None):
return False


@shared_task(
@app.task(
name='geonode.qgis_server.tasks.update.cache_request',
queue='update')
@on_ogc_backend(qgis_server.BACKEND_PACKAGE)
Expand Down
8 changes: 4 additions & 4 deletions geonode/services/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,22 @@

import logging

from celery import shared_task
from django.db import transaction

from . import enumerations
from . import models
from .serviceprocessors import get_service_handler

from geonode.celery_app import app
from geonode.layers.models import Layer
from geonode.catalogue.models import catalogue_post_save

logger = logging.getLogger(__name__)


@shared_task(bind=True,
name='geonode.services.tasks.update.harvest_resource',
queue='update',)
@app.task(bind=True,
name='geonode.services.tasks.update.harvest_resource',
queue='update',)
def harvest_resource(self, harvest_job_id):
harvest_job = models.HarvestJob.objects.get(pk=harvest_job_id)
harvest_job.update_status(
Expand Down
7 changes: 6 additions & 1 deletion geonode/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -1565,10 +1565,14 @@ def get_geonode_catalogue_service():
if ASYNC_SIGNALS:
_BROKER_URL = os.environ.get('BROKER_URL', RABBITMQ_SIGNALS_BROKER_URL)
# _BROKER_URL = = os.environ.get('BROKER_URL', REDIS_SIGNALS_BROKER_URL)

CELERY_RESULT_BACKEND = _BROKER_URL
else:
_BROKER_URL = LOCAL_SIGNALS_BROKER_URL
CELERY_RESULT_BACKEND_PATH = os.getenv(
'CELERY_RESULT_BACKEND_PATH', os.path.join(PROJECT_ROOT, 'results'))
if not os.path.exists(CELERY_RESULT_BACKEND_PATH):
os.makedirs(CELERY_RESULT_BACKEND_PATH)
CELERY_RESULT_BACKEND = 'file:///%s' % CELERY_RESULT_BACKEND_PATH

# Note:BROKER_URL is deprecated in favour of CELERY_BROKER_URL
CELERY_BROKER_URL = _BROKER_URL
Expand All @@ -1580,6 +1584,7 @@ def get_geonode_catalogue_service():

# Set this to False in order to run async
CELERY_TASK_ALWAYS_EAGER = False if ASYNC_SIGNALS else True
CELERY_TASK_EAGER_PROPAGATES = False if ASYNC_SIGNALS else True
CELERY_TASK_IGNORE_RESULT = True

# I use these to debug kombu crashes; we get a more informative message.
Expand Down
14 changes: 7 additions & 7 deletions geonode/tasks/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@
#
#########################################################################

from celery.app import shared_task
from geonode.celery_app import app
from celery.utils.log import get_task_logger
from django.conf import settings
from django.core.mail import send_mail

logger = get_task_logger(__name__)


@shared_task(bind=True,
name='geonode.tasks.email.send_mail',
queue='email',)
@app.task(bind=True,
name='geonode.tasks.email.send_mail',
queue='email',)
def send_email(self, *args, **kwargs):
"""
Sends an email using django's send_mail functionality.
Expand All @@ -37,9 +37,9 @@ def send_email(self, *args, **kwargs):
send_mail(*args, **kwargs)


@shared_task(bind=True,
name='geonode.tasks.notifications.send_queued_notifications',
queue='email',)
@app.task(bind=True,
name='geonode.tasks.notifications.send_queued_notifications',
queue='email',)
def send_queued_notifications(self, *args):
"""Sends queued notifications.
Expand Down

0 comments on commit 8afb793

Please sign in to comment.