2017-04-06 1 views
0

Tout d'abord, j'utilise Python 2.7, Django 1.9.12 et Celery 4.0.2 dans mon projet.
Je suis le tutoriel "Premiers pas avec Django".
Ceci est mon celeryapp.py:Configuration de céleri avec django: app.config_from_object ('django.conf: settings') ne fonctionne pas

from __future__ import absolute_import, unicode_literals 
import os 
from celery import Celery 
import sys 

sys.path.append('vagrant/nested_tree/nested_tree_project') 

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

app = Celery('nested_tree_project', broker='amqp://localhost//') 

# Using a string here means the worker don't have to serialize 
# the configuration object to child processes. 
# - namespace='CELERY' means all celery-related configuration keys 
# should have a `CELERY_` prefix. 
app.config_from_object('django.conf:global_settings', namespace='CELERY') 

# Load task modules from all registered Django app configs. 
app.autodiscover_tasks() 


Je peux le faire fonctionner que de cette façon, avec les paramètres globaux

app.config_from_object('django.conf:global_settings', namespace='CELERY') 


Et je ne peux pas vraiment accéder à mes paramètres du projet. Si j'utilise

'django.conf:settings' 

Je reçois une erreur lorsque je commence un travailleur de céleri

Traceback (most recent call last): 
    File "/vagrant/nested_tree/venv/bin/celery", line 11, in <module> 
    sys.exit(main()) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/__main__.py", line 14, in main 
    _main() 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 326, in main 
    cmd.execute_from_commandline(argv) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 488, in execute_from_com 
mandline 
    super(CeleryCommand, self).execute_from_commandline(argv))) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/base.py", line 281, in execute_from_comma 
ndline 
    return self.handle_argv(self.prog_name, argv[1:]) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 480, in handle_argv 
    return self.execute(command, argv) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 412, in execute 
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0]) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/worker.py", line 221, in run_from_argv 
    return self(*args, **options) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/base.py", line 244, in __call__ 
    ret = self.run(*args, **kwargs) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/bin/worker.py", line 255, in run 
    **kwargs) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/worker/worker.py", line 94, in __init__ 
    self.app.loader.init_worker() 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/loaders/base.py", line 116, in init_worker 
    self.import_default_modules() 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/loaders/base.py", line 111, in import_default 
_modules 
    return [self.import_task_module(m) for m in self.default_modules] 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/loaders/base.py", line 97, in import_task_mod 
ule 
    return self.import_from_cwd(module) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/loaders/base.py", line 106, in import_from_cw 
d 
    package=package, 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/utils/imports.py", line 101, in import_from_c 
wd 
    return imp(module, package=package) 
    File "/vagrant/nested_tree/venv/local/lib/python2.7/site-packages/celery/loaders/base.py", line 100, in import_module 
    return importlib.import_module(module, package=package) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 32, in import_module 
    raise TypeError("relative imports require the 'package' argument") 


Qu'est-ce que je fais mal? J'ai essayé d'exécuter le shell python à partir du même répertoire:

import sys, os, django 
sys.path.append('vagrant/nested_tree/nested_tree_project') 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nested_tree_project.settings') 
django.setup() 

Cela fonctionne très bien.

Dans le cas où il peut être utile, voici ma hiérarchie du projet: hierarchy

Répondre

0

Peut-être Céleri a été installé mal. J'ai créé un nouvel environnement virtuel et cela fonctionne maintenant.