2017-11-14 1 views
0

나는 pip install celerysudo apt-get install rabbitmq 명령으로 셀러리와 RabbitMQ를 설치했다. 셀러리가 작동하지 않습니다. 나는이 오류를 얻을 : 위의 예외 처리하는 동안셀러리와 토끼 MQ 장고

Traceback (most recent call last): 
    File "/home/morilon/dj/shop/lib/python3.5/site- 
packages/celery/app/utils.py", line 361, in find_app 
    found = sym.app 
AttributeError: module 'myshop' has no attribute 'app' 

을, 또 다른 예외가 발생했습니다 :

Traceback (most recent call last): 
    File "/home/morilon/dj/shop/bin/celery", line 11, in <module> 
    sys.exit(main()) 
File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/__main__.py", line 14, in main 
    _main() 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/bin/celery.py", line 326, in main 
    cmd.execute_from_commandline(argv) 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/bin/celery.py", line 488, in execute_from_commandline 
    super(CeleryCommand, self).execute_from_commandline(argv))) 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/bin/base.py", line 279, in execute_from_commandline 
    argv = self.setup_app_from_commandline(argv) 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/bin/base.py", line 481, in setup_app_from_commandline 
    self.app = self.find_app(app) 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/bin/base.py", line 503, in find_app 
    return find_app(app, symbol_by_name=self.symbol_by_name) 
    File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/app/utils.py", line 366, in find_app 
    found = sym.celery 
AttributeError: module 'myshop' has no attribute 'celery' 

나는 이것으로 무엇을 이해하지?

celery_app로 .celery 수입 응용 프로그램에서 tasks.py

from celery import task 
from django.core.mail import send_mail 
from .models import Order 

@task 
def order_created(order_id): 
    """ 
    Task to send an e-mail notification when an order is successfully created. 
    """ 
    order = Order.objects.get(id=order_id) 
    subject = 'Order nr. {}'.format(order.id) 
    message = 'Dear {},\n\nYou have successfully placed an order. Your order id is {}.'.format(order.first_name, 
                      order.id) 
    mail_sent = send_mail(subject, message, '[email protected]', [order.email]) 
    return mail_sent 

celery.py

import os 
from celery import Celery 
from django.conf import settings 

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

app = Celery('myshop') 

app.config_from_object('django.conf:settings') 
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 

초기화

이 프로젝트는 GitHub에 있습니다 https://github.com/Loctarogar/Django-by-Example

+0

"myshop.celery 가져 오기 ..."와 같은 작업을 수행하는 중 가져 오기 오류가 발생했습니다. 나머지 장고 코드를 게시 할 수 있습니까? 어쩌면 "myshop"앱의 내용일까요? 특히 tasks.py 파일을 가지고 있다면 –

+0

나는 "Django by Example"이라는 책으로 장고를 배우려고 노력한다. 그래서 모든 코드를 책에서 가져옵니다. – Dorian

+0

흠 좋습니다. 다음 질문 : 샐러리 파일을 찾을 수 없기 때문에 오류가 __init__.py 파일의 줄에서 오는 것 같습니다. 프로젝트 레이아웃을 게시 할 수 있습니까? 특히 __init__.py 파일과 celery.py 파일이 같은 레벨에 있는지 다시 한 번 확인하는 것이 좋습니다. 그렇지 않은 경우 파일을 이동할 필요는 없지만 ".celery import app as celery_app"행을 변경해야합니다. "." 셀러리 파일이 init.py 파일과 같은 폴더에 있음을 의미하므로, 그렇지 않은 경우 오류가 발생합니다. –

답변

0

settings.py

에 위치해 있습니다 또는 당신이 더 많은 설명

또한 this post를 확인하실 수 있습니다에 대한 장고와 셀러리를 사용하는 THIS 문서를 따를 수 프로젝트 디렉토리에 파일 celery.py을위한 퍼펙트 맞춤법에보십시오!

0

셀러리 응용 프로그램을 가져 오는 파일은 어디에 있습니까? shop/myshop/ 디렉토리에 있습니까? 그래서 시작할 때 셀러리 앱을로드하려면 myshop 앱 안에 있어야합니다.

+0

에 대한 링크가 있습니다. 안녕하세요. 이 질문을 어떻게 닫을 수 있습니까? – Dorian

관련 문제