evilPutty
evilPutty

Reputation: 53

TypeError when enabling Beat for Celery and Django

I'm having an issue getting celery to start with beat using python manage.py celeryd -B -E

I'm running python 3.2.3 in a virtualenv on Debian Wheezy.

These are the versions running within my virtualenv:

Django==1.6
Pillow==2.2.1
South==0.8.3
amqp==1.3.3
anyjson==0.3.3
billiard==3.3.0.7
celery==3.1.4
django-celery==3.1.1
docutils==0.11
kombu==3.0.5
psycopg2==2.5.1
pytz==2013.8
wsgiref==0.1.2

This is the error i recieve when i attempt this command python manage.py celeryd -B -E

[2013-11-19 16:57:32,443: ERROR/MainProcess] Process Beat

Traceback (most recent call last):
  File "/home/webuser/.virtualenvs/web/lib/python3.2/site-packages/billiard/process.py", line 282, in _bootstrap
    self.run()
  File "/home/webuser/.virtualenvs/web/lib/python3.2/site-packages/celery/beat.py", line 507, in run
    ] + list(iter_open_logger_fds()))
  File "/home/webuser/.virtualenvs/web/lib/python3.2/site-packages/celery/platforms.py", line 248, in close_open_fds

    for f in uniq(sorted(keep or []))
TypeError: unorderable types: _io.TextIOWrapper() < _io.TextIOWrapper()

Running without beat gives me no errors.

This is an excerpt from my settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'south',
    'djcelery',
)

# Celery Application Settings

BROKER_URL = "amqp://placeholder:placeholder@localhost:5672/placeholder"
CELERY_RESULT_BACKEND = "database"

CELERY_RESULT_DBURI = "postgresql://placeholder:placeholder@localhost/placeholder"

import djcelery
djcelery.setup_loader()


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'web.urls'

WSGI_APPLICATION = 'web.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'placeholder',
        'USER': 'placeholder',
        'PASSWORD':     'placeholder',
        'HOST': 'localhost',
    }
}

Has anyone experienced this? Or perhaps someone can explain how I may go about fixing this error.

Thank you!

Upvotes: 3

Views: 308

Answers (1)

evilPutty
evilPutty

Reputation: 53

Worked around this by doing:

pip uninstall celery 
pip install celery==3.1.1

Upvotes: 1

Related Questions