I’m using autodiscover in my celery.py file for gathering tasks. Which up until a recently picked all of the app.tasks.py up, I’m not sure why but my config.tasks.py function are no longer being picked up, but all the other apps are. If I from “config.tasks import *” there are no errors and I can run the tasks manually through shell.
ive tried using force=True on autodiscover which had no effect, and a number of other solutions, none of which seem to have any effect, does anyone have any ideas on what to check next?
Thanks
Structure:
-config --apps.py --views.py --models.py --tasks.py -monitoring --apps.py --views.py --models.py --tasks.py -app --apps.py --settings.py --celery.py
celery config
from __future__ import absolute_import, unicode_literals import os, django from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') django.setup() # This is key app = Celery("app") app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django app configs. app.autodiscover_tasks() if __name__ == '__main__': app.start()
settings.py
CELERY_TIMEZONE = 'Europe/London' ENABLE_UTC = True CELERY_BROKER_URL = 'redis://redis:6379' CELERY_RESULT_BACKEND = 'redis://redis:6379' CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' CELERY_TASK_TIME_LIMIT = 540 INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'haystack', 'django_tables2', 'django_filters', 'django_celery_beat', 'config.apps.ConfigConfig', 'monitoring.apps.MonitoringConfig', 'storages', 'stdimage', 'simple_history', 'crispy_forms', 'rest_framework', 'rest_framework.authtoken', )
tasks.py
from __future__ import absolute_import, unicode_literals import requests, re, json, ipaddress, time, meraki, logging, random, gzip, diffios from celery import chord, group from app.celery import app from django.conf import settings from config.models import * @app.task def execute_command(device_id, cmd, user_id): ... return output
console output
celery_1 | -------------- celery@3504f0d9bb2e v4.3.1 (rhubarb) celery_1 | ---- **** ----- celery_1 | --- * *** * -- Linux-4.19.121-linuxkit-x86_64-with-debian-9.7 2021-02-09 12:14:41 celery_1 | -- * - **** --- celery_1 | - ** ---------- [config] celery_1 | - ** ---------- .> app: app:0x7f82527f04a8 celery_1 | - ** ---------- .> transport: redis://redis:6379// celery_1 | - ** ---------- .> results: redis://redis:6379/ celery_1 | - *** --- * --- .> concurrency: 30 (prefork) celery_1 | -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) celery_1 | --- ***** ----- celery_1 | -------------- [queues] celery_1 | .> celery exchange=celery(direct) key=celery celery_1 | celery_1 | celery_1 | [tasks] celery_1 | . app_settings.tasks.import_meraki_templates celery_1 | . celery.accumulate celery_1 | . celery.backend_cleanup celery_1 | . celery.chain celery_1 | . celery.chord celery_1 | . celery.chord_unlock celery_1 | . celery.chunks celery_1 | . celery.group celery_1 | . celery.map celery_1 | . celery.starmap celery_1 | . app.celery.debug_task celery_1 | . monitoring.tasks.link_checks celery_1 | . monitoring.tasks.service_checks
Advertisement
Answer
I rebuilt my docker container and now they’re all loading again, not sure what would of caused this but its working!