Задать вопрос
@densaface

Почему flower не показывает задачи django celery?

Перебровал кучу туториалов по запуску django celery, так и не сложилось единой картинки в голове. В общем, сейчас django celery исправно работает. Отсылает задачи в очередь, выполняет их, и в самой views.py приложения я могу по id запросить состояние задачи, посмотреть выполнилось таска или нет.

Но запуск flower не показывает ни воркеров, ни задач.

Собственно при запуске flower уже видно, что оно криво запустилось

K:\sw\prod_web_site3>C:\Python27\python.exe manage.py celery flower -A prod_web
site.celeryapp:app_celery worker
[I 160511 20:35:08 command:136] Visit me at http://localhost:5555
[I 160511 20:35:08 command:141] Broker: redis://localhost:6379/0
[I 160511 20:35:08 command:144] Registered tasks:
    ['accounts.tasks.just_print',
     'accounts.tasks.test',
     'celery.backend_cleanup',
     'celery.chain',
     'celery.chord',
     'celery.chord_unlock',
     'celery.chunks',
     'celery.group',
     'celery.map',
     'celery.starmap']
[I 160511 20:35:08 mixins:231] Connected to redis://localhost:6379/0
[W 160511 20:35:11 control:44] 'stats' inspect method failed
[W 160511 20:35:11 control:44] 'active_queues' inspect method failed
[W 160511 20:35:11 control:44] 'registered' inspect method failed
[W 160511 20:35:11 control:44] 'scheduled' inspect method failed
[W 160511 20:35:11 control:44] 'active' inspect method failed
[W 160511 20:35:11 control:44] 'reserved' inspect method failed
[W 160511 20:35:11 control:44] 'revoked' inspect method failed
[W 160511 20:35:11 control:44] 'conf' inspect method failed

Зарегистрированные задачи flower увидел, смог подключиться к базе но почему то ожидаемые методы оказались в нерабочем состоянии

Также команда пинг тоже не выполняется

K:\sw\prod_web_site3>C:\Python27\Scripts\celery.exe -A prod_web_site.celeryapp:app_celery inspect ping
Error: No nodes replied within time constraint.

Как запускал воркер

K:\sw\prod_web_site3>python manage.py celery worker -l debug --pythonpath=C:\Python27\

селерикам

python manage.py celerycam --frequency=5.0
возможно дело в settings.py в котором накопился венегрет настроек из разных туториалов, приведу его на всякий случай почти полностью. Для меня важно чтобы работали в первую очередь юзерена, селери, вместо флауэр могу изобрести свой велосипед, благо во views.py могу сохранять пиды запущенных задач и мониторить их состояние. Но буду рад, если коллективный разум подскажет способы диагностики проблем с флауэрс, толковые туториалы

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'userena',
    'guardian',
    'easy_thumbnails',
    'accounts',
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ru'
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'
AUTHENTICATION_BACKENDS = (
    'userena.backends.UserenaAuthenticationBackend',
    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)
ANONYMOUS_USER_ID = -1

AUTH_PROFILE_MODULE = 'accounts.UserProfile'
USERENA_SIGNIN_REDIRECT_URL = '/accounts/%(username)s/'
LOGIN_URL = '/accounts/signin/'
LOGOUT_URL = '/accounts/signout/'
SITE_ID = 2

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = '***'
EMAIL_HOST_PASSWORD = '***'

#
import djcelery
djcelery.setup_loader()

INSTALLED_APPS += ('djcelery', 'djkombu',)

BROKER_URL = 'redis://localhost:6379/0'

CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

BROKER_HOST = "localhost"
BROKER_BACKEND="redis"
REDIS_PORT=6379
REDIS_HOST = "localhost"
BROKER_USER = ""
BROKER_PASSWORD =""
BROKER_VHOST = "0"
REDIS_DB = 0
REDIS_CONNECT_RETRY = True
CELERY_SEND_EVENTS=True
#CELERY_RESULT_BACKEND='redis'
CELERY_TASK_RESULT_EXPIRES =  10
CELERYBEAT_SCHEDULER="djcelery.schedulers.DatabaseScheduler"
CELERY_ALWAYS_EAGER=False
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600}

CELERY_TASK_RESULT_EXPIRES = 7*86400  # 7 days
CELERY_SEND_EVENTS = True
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
#CELERY_ACCEPT_CONTENT = ['application/json']
#CELERY_TASK_SERIALIZER = 'json'
#CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Europe/Kiev'

from datetime import timedelta

CELERY_ALWAYS_EAGER=False
BROKER_BACKEND = "djkombu.transport.DatabaseTransport"

CELERYCAM_EXPIRE_SUCCESS = timedelta(days=30)
CELERYCAM_EXPIRE_ERROR = timedelta(days=7)
CELERYCAM_EXPIRE_PENDING = timedelta(days=7)

Когда то флауэр работал, но воркер при этом задачи принимал, но не хотел их выполнять, теперь воркер работает, но флауэр отказывается.
  • Вопрос задан
  • 3963 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
un1t
@un1t
Ты у flower указал -A, а у воркера нет.
Ну и вообще ты как-то странно запускешь через manage.py
Попробуй типа этого
celery -A proj worker -l info
celery -A proj flower

Туториал вот
docs.celeryproject.org/en/latest/django/first-step...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы