From 0fd729b019c61260059556c751dd328ec78fee77 Mon Sep 17 00:00:00 2001 From: Nico Miguelino Date: Thu, 20 Jun 2024 12:40:27 -0700 Subject: [PATCH] Refactor all Celery tasks to a separate file (#1938) --- celery_tasks.py | 66 +++++++++++++++++++++++++++ docker/Dockerfile.celery.tmpl | 4 +- server.py | 84 +++++++++-------------------------- static/js/settings.coffee | 12 ++--- static/js/settings.js | 12 ++--- static/js/settings.js.map | 2 +- tests/celery_tasks_test.py | 4 +- 7 files changed, 103 insertions(+), 81 deletions(-) create mode 100644 celery_tasks.py diff --git a/celery_tasks.py b/celery_tasks.py new file mode 100644 index 000000000..9b68db748 --- /dev/null +++ b/celery_tasks.py @@ -0,0 +1,66 @@ +import sh + +from celery import Celery +from datetime import timedelta +from lib import diagnostics +from lib.utils import ( + connect_to_redis, + is_balena_app, + reboot_via_balena_supervisor, + shutdown_via_balena_supervisor, +) +from os import getenv, path +from retry.api import retry_call + + +CELERY_RESULT_BACKEND = getenv('CELERY_RESULT_BACKEND', 'redis://localhost:6379/0') +CELERY_BROKER_URL = getenv('CELERY_BROKER_URL', 'redis://localhost:6379/0') +CELERY_TASK_RESULT_EXPIRES = timedelta(hours=6) + +r = connect_to_redis() +celery = Celery( + 'Anthias Celery Worker', + backend=CELERY_RESULT_BACKEND, + broker=CELERY_BROKER_URL, + result_expires=CELERY_TASK_RESULT_EXPIRES +) + + +@celery.on_after_configure.connect +def setup_periodic_tasks(sender, **kwargs): + # Calls cleanup() every hour. + sender.add_periodic_task(3600, cleanup.s(), name='cleanup') + sender.add_periodic_task(60*5, get_display_power.s(), name='display_power') + + +@celery.task(time_limit=30) +def get_display_power(): + r.set('display_power', diagnostics.get_display_power()) + r.expire('display_power', 3600) + + +@celery.task +def cleanup(): + sh.find(path.join(getenv('HOME'), 'screenly_assets'), '-name', '*.tmp', '-delete') + + +@celery.task +def reboot_anthias(): + """ + Background task to reboot Anthias + """ + if is_balena_app(): + retry_call(reboot_via_balena_supervisor, tries=5, delay=1) + else: + r.publish('hostcmd', 'reboot') + + +@celery.task +def shutdown_anthias(): + """ + Background task to shutdown Anthias + """ + if is_balena_app(): + retry_call(shutdown_via_balena_supervisor, tries=5, delay=1) + else: + r.publish('hostcmd', 'shutdown') diff --git a/docker/Dockerfile.celery.tmpl b/docker/Dockerfile.celery.tmpl index 88088f7d9..e4c1f7f7c 100644 --- a/docker/Dockerfile.celery.tmpl +++ b/docker/Dockerfile.celery.tmpl @@ -12,8 +12,8 @@ ENV GIT_HASH=$GIT_HASH ENV GIT_SHORT_HASH=$GIT_SHORT_HASH ENV GIT_BRANCH=$GIT_BRANCH -CMD celery -A server.celery worker \ - -B -n worker@screenly \ +CMD celery -A celery_tasks.celery worker \ + -B -n worker@anthias \ --loglevel=info \ --schedule \ /tmp/celerybeat-schedule diff --git a/server.py b/server.py index c97cf765c..a45b3b74a 100755 --- a/server.py +++ b/server.py @@ -14,24 +14,30 @@ import pydbus import psutil import re -import sh import os import traceback import yaml import uuid from base64 import b64encode -from celery import Celery from datetime import datetime, timedelta from dateutil import parser as date_parser from functools import wraps from hurry.filesize import size from mimetypes import guess_type, guess_extension from os import getenv, makedirs, mkdir, path, remove, rename, statvfs, stat -from retry.api import retry_call from urllib.parse import urlparse -from flask import Flask, escape, make_response, render_template, request, send_from_directory, url_for, jsonify +from flask import ( + Flask, + escape, + make_response, + render_template, + request, + send_from_directory, + url_for, + jsonify, +) from flask_cors import CORS from flask_restful_swagger_2 import Api, Resource, Schema, swagger from flask_swagger_ui import get_swaggerui_blueprint @@ -39,6 +45,8 @@ from gunicorn.app.base import Application from werkzeug.wrappers import Request +from celery_tasks import celery, shutdown_anthias, reboot_anthias + from lib import assets_helper from lib import backup_helper from lib import db @@ -48,7 +56,6 @@ from lib.github import is_up_to_date from lib.auth import authorized - from lib.utils import ( download_video_from_youtube, json_dump, is_docker, get_active_connections, remove_connection, @@ -56,19 +63,18 @@ get_node_ip, get_node_mac_address, get_video_duration, is_balena_app, is_demo_node, - shutdown_via_balena_supervisor, reboot_via_balena_supervisor, string_to_bool, connect_to_redis, url_fails, validate_url, ) -from settings import CONFIGURABLE_SETTINGS, DEFAULTS, LISTEN, PORT, settings, ZmqPublisher, ZmqCollector +from settings import ( + CONFIGURABLE_SETTINGS, DEFAULTS, LISTEN, PORT, + settings, ZmqPublisher, ZmqCollector, +) HOME = getenv('HOME') -CELERY_RESULT_BACKEND = getenv('CELERY_RESULT_BACKEND', 'redis://localhost:6379/0') -CELERY_BROKER_URL = getenv('CELERY_BROKER_URL', 'redis://localhost:6379/0') -CELERY_TASK_RESULT_EXPIRES = timedelta(hours=6) app = Flask(__name__) app.debug = string_to_bool(os.getenv('DEBUG', 'False')) @@ -77,56 +83,6 @@ api = Api(app, api_version="v1", title="Screenly OSE API") r = connect_to_redis() -celery = Celery( - app.name, - backend=CELERY_RESULT_BACKEND, - broker=CELERY_BROKER_URL, - result_expires=CELERY_TASK_RESULT_EXPIRES -) - - -################################ -# Celery tasks -################################ - -@celery.on_after_configure.connect -def setup_periodic_tasks(sender, **kwargs): - # Calls cleanup() every hour. - sender.add_periodic_task(3600, cleanup.s(), name='cleanup') - sender.add_periodic_task(60*5, get_display_power.s(), name='display_power') - - -@celery.task(time_limit=30) -def get_display_power(): - r.set('display_power', diagnostics.get_display_power()) - r.expire('display_power', 3600) - - -@celery.task -def cleanup(): - sh.find(path.join(HOME, 'screenly_assets'), '-name', '*.tmp', '-delete') - - -@celery.task -def reboot_screenly(): - """ - Background task to reboot Screenly-OSE. - """ - if is_balena_app(): - retry_call(reboot_via_balena_supervisor, tries=5, delay=1) - else: - r.publish('hostcmd', 'reboot') - - -@celery.task -def shutdown_screenly(): - """ - Background task to shutdown Screenly-OSE. - """ - if is_balena_app(): - retry_call(shutdown_via_balena_supervisor, tries=5, delay=1) - else: - r.publish('hostcmd', 'shutdown') ################################ @@ -1278,7 +1234,7 @@ class RebootScreenly(Resource): } }) def post(self): - reboot_screenly.apply_async() + reboot_anthias.apply_async() return '', 200 @@ -1293,7 +1249,7 @@ class ShutdownScreenly(Resource): } }) def post(self): - shutdown_screenly.apply_async() + shutdown_anthias.apply_async() return '', 200 @@ -1449,8 +1405,8 @@ def get(self): api.add_resource(Info, '/api/v1/info') api.add_resource(ResetWifiConfig, '/api/v1/reset_wifi') api.add_resource(UpgradeScreenly, '/api/v1/upgrade_screenly') -api.add_resource(RebootScreenly, '/api/v1/reboot_screenly') -api.add_resource(ShutdownScreenly, '/api/v1/shutdown_screenly') +api.add_resource(RebootScreenly, '/api/v1/reboot') +api.add_resource(ShutdownScreenly, '/api/v1/shutdown') api.add_resource(ViewerCurrentAsset, '/api/v1/viewer_current_asset') try: diff --git a/static/js/settings.coffee b/static/js/settings.coffee index dcb05d02b..a81e307bc 100644 --- a/static/js/settings.coffee +++ b/static/js/settings.coffee @@ -129,13 +129,13 @@ $().ready -> $("#start-upgrade-btn").prop "disabled", no $("#btn-reboot-system").click (e) -> - if confirm "Are you sure you want to reboot your Screenly?" - $.post "/api/v1/reboot_screenly" + if confirm "Are you sure you want to reboot your device?" + $.post "/api/v1/reboot" .done (e) -> ($ "#request-error .alert").show() ($ "#request-error .alert").addClass "alert-success" ($ "#request-error .alert").removeClass "alert-danger" - ($ "#request-error .msg").text "Screenly reboot has started successfully." + ($ "#request-error .msg").text "Reboot has started successfully." .fail (data, e) -> ($ "#request-error .alert").show() ($ "#request-error .alert").addClass "alert-danger" @@ -146,13 +146,13 @@ $().ready -> ($ "#request-error .msg").text "The operation failed. Please reload the page and try again." $("#btn-shutdown-system").click (e) -> - if confirm "Are you sure you want to shutdown your Screenly?" - $.post "/api/v1/shutdown_screenly" + if confirm "Are you sure you want to shutdown your device?" + $.post "/api/v1/shutdown" .done (e) -> ($ "#request-error .alert").show() ($ "#request-error .alert").addClass "alert-success" ($ "#request-error .alert").removeClass "alert-danger" - ($ "#request-error .msg").text "Screenly shutdown has started successfully. Soon you will be able to unplug the power from your Raspberry Pi." + ($ "#request-error .msg").text "Device shutdown has started successfully. Soon you will be able to unplug the power from your Raspberry Pi." .fail (data, e) -> ($ "#request-error .alert").show() ($ "#request-error .alert").addClass "alert-danger" diff --git a/static/js/settings.js b/static/js/settings.js index 79ea8bdfd..9a6ccb9de 100644 --- a/static/js/settings.js +++ b/static/js/settings.js @@ -153,12 +153,12 @@ }); }); $("#btn-reboot-system").click(function(e) { - if (confirm("Are you sure you want to reboot your Screenly?")) { - return $.post("/api/v1/reboot_screenly").done(function(e) { + if (confirm("Are you sure you want to reboot your device?")) { + return $.post("/api/v1/reboot").done(function(e) { ($("#request-error .alert")).show(); ($("#request-error .alert")).addClass("alert-success"); ($("#request-error .alert")).removeClass("alert-danger"); - return ($("#request-error .msg")).text("Screenly reboot has started successfully."); + return ($("#request-error .msg")).text("Reboot has started successfully."); }).fail(function(data, e) { var err, j; ($("#request-error .alert")).show(); @@ -173,12 +173,12 @@ } }); $("#btn-shutdown-system").click(function(e) { - if (confirm("Are you sure you want to shutdown your Screenly?")) { - return $.post("/api/v1/shutdown_screenly").done(function(e) { + if (confirm("Are you sure you want to shutdown your device?")) { + return $.post("/api/v1/shutdown").done(function(e) { ($("#request-error .alert")).show(); ($("#request-error .alert")).addClass("alert-success"); ($("#request-error .alert")).removeClass("alert-danger"); - return ($("#request-error .msg")).text("Screenly shutdown has started successfully. Soon you will be able to unplug the power from your Raspberry Pi."); + return ($("#request-error .msg")).text("Device shutdown has started successfully. Soon you will be able to unplug the power from your Raspberry Pi."); }).fail(function(data, e) { var err, j; ($("#request-error .alert")).show(); diff --git a/static/js/settings.js.map b/static/js/settings.js.map index 8050592f8..ff5865f2e 100644 --- a/static/js/settings.js.map +++ b/static/js/settings.js.map @@ -6,5 +6,5 @@ "static/js/settings.coffee" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/tests/celery_tasks_test.py b/tests/celery_tasks_test.py index 85cea28b4..e278410d5 100644 --- a/tests/celery_tasks_test.py +++ b/tests/celery_tasks_test.py @@ -1,8 +1,8 @@ from os import getenv, path, listdir, system import unittest -from server import celery as celeryapp -from server import cleanup +from celery_tasks import celery as celeryapp +from celery_tasks import cleanup class CeleryTasksTestCase(unittest.TestCase):