Skip to content

Commit

Permalink
[COST-5793] remove croniter dependency (#5435)
Browse files Browse the repository at this point in the history
  • Loading branch information
maskarb authored Jan 6, 2025
1 parent cc07aa2 commit 0df02e7
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 20 deletions.
2 changes: 0 additions & 2 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ verify_ssl = true
name = "pypi"

[packages]
# Direct dependencies
adal = "*"
app-common-python = ">=0.2.3"
azure-identity = "*"
Expand All @@ -19,7 +18,6 @@ cachetools = ">=4.1.0"
celery = ">=5.2.2"
ciso8601 = ">=2.1"
confluent-kafka = ">=2.1.0"
croniter = "*"
Django = "~=4.2.0"
django-cors-headers = ">=3.1"
django-environ = ">=0.4"
Expand Down
11 changes: 1 addition & 10 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 13 additions & 8 deletions koku/koku/celery.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
from celery import Celery
from celery import Task
from celery.schedules import crontab
from celery.schedules import ParseException
from celery.signals import celeryd_after_setup
from celery.signals import worker_process_init
from celery.signals import worker_process_shutdown
from croniter import croniter
from django.conf import settings
from kombu.exceptions import OperationalError

Expand All @@ -23,7 +23,6 @@
from koku.probe_server import ProbeServer
from koku.probe_server import start_probe_server


LOG = logging.getLogger(__name__)


Expand Down Expand Up @@ -85,11 +84,16 @@ def readiness_check(self):
self._write_response(ProbeResponse(status, msg))


def validate_cron_expression(expresssion, default="0 * * * *"):
if not croniter.is_valid(expresssion):
print(f"Invalid report-download-schedule {expresssion}. Falling back to default {default}")
expresssion = default
return expresssion
def validate_cron_expression(expression, default="0 * * * *"):
if len(expression.split(" ", 5)) != 5:
print(f"Invalid cron expression: {expression}. Falling back to default {default}")
expression = default
try:
crontab(*expression.split(" ", 5))
except (ValueError, ParseException) as e:
print(f"Invalid cron expression: {expression}. Falling back to default {default}, Error: {e}")
expression = default
return expression


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "koku.settings")
Expand Down Expand Up @@ -235,9 +239,10 @@ def validate_cron_expression(expresssion, default="0 * * * *"):
@celeryd_after_setup.connect
def wait_for_migrations(sender, instance, **kwargs): # pragma: no cover
"""Wait for migrations to complete before completing worker startup."""
from .database import check_migrations
from masu.celery.tasks import collect_queue_metrics

from .database import check_migrations

httpd = start_probe_server(WorkerProbeServer)

# This is a special case because check_migrations() returns three values
Expand Down

0 comments on commit 0df02e7

Please sign in to comment.