2016-04-20 1 views
4

j'ai la tâche suivante:ne peut pas importer le modèle de django dans la tâche de céleri

from __future__ import absolute_import 

from myproject.celery import app 

from myapp.models import Entity 


@app.task 
def add(entity_id): 
    entity = Entity.objects.get(pk=entity_id) 
    return entity.name 

Je reçois l'erreur suivante:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Si je prends l'importation tout entité est très bien et aucune erreur ne se produit. Lors de la recopie:

from myapp.models import Entity 

l'erreur renvoie.

from __future__ import unicode_literals 
from django.contrib.auth.models import User 
from django.db import models 
from django.core.mail import EmailMultiAlternatives 
from django.template import Context, loader 
from django.utils.html import strip_tags 

class Entity(models.Model): 
    area = models.ForeignKey(Area) 
    name = models.CharField(max_length=255) 
    type = models.CharField(max_length=255) 
    status = models.IntegerField(choices=STATUS_TYPES, default=0) 
    created_at = models.DateTimeField(auto_now_add = True) 
    updated_at = models.DateTimeField(auto_now = True) 


    def __unicode__(self): 
     return self.name 

Comment importer un modèle django dans une tâche de céleri?

+0

Pouvez-vous poster modèle d'entité? Vous essayez probablement d'importer les paramètres de ce fichier et essayez d'accéder à la base de données. Ou une certaine dépend. Difficile de dire à partir de l'information que vous avez donnée. – mtndesign

+0

@mtndesign J'ai ajouté le modèle d'entité. Si j'importais un paramètre ou un utilisateur, que devrais-je faire? – Atma

+0

Eh bien, je ne voulais pas dire le modèle lui-même, je voulais dire le fichier modèle, pour voir les bibliothèques importées. De toute façon, si vous importiez le module de paramètres, vous devez vous assurer qu'il est disponible et accessible depuis le chemin dans lequel se trouve le modèle 'Entity'. L'erreur indique que vous n'avez pas configuré votre application correctement, de manière que django ne le fasse pas Je ne sais pas où sont les fichiers essentiels. Pour configurer vous pouvez utiliser ceci: 'depuis les paramètres d'importation de django.conf' puis' settings.configure() '. – mtndesign

Répondre

5

Mon fichier de céleri nécessaire pour avoir:

from __future__ import absolute_import 

import os 

from celery import Celery 


# set the default Django settings module for the 'celery' program. 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') 

from django.conf import settings # noqa 

Merci pour me avoir aidé à cette conclusion @mtndesign