나는 pip install celery
과 sudo 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
"myshop.celery 가져 오기 ..."와 같은 작업을 수행하는 중 가져 오기 오류가 발생했습니다. 나머지 장고 코드를 게시 할 수 있습니까? 어쩌면 "myshop"앱의 내용일까요? 특히 tasks.py 파일을 가지고 있다면 –
나는 "Django by Example"이라는 책으로 장고를 배우려고 노력한다. 그래서 모든 코드를 책에서 가져옵니다. – Dorian
흠 좋습니다. 다음 질문 : 샐러리 파일을 찾을 수 없기 때문에 오류가 __init__.py 파일의 줄에서 오는 것 같습니다. 프로젝트 레이아웃을 게시 할 수 있습니까? 특히 __init__.py 파일과 celery.py 파일이 같은 레벨에 있는지 다시 한 번 확인하는 것이 좋습니다. 그렇지 않은 경우 파일을 이동할 필요는 없지만 ".celery import app as celery_app"행을 변경해야합니다. "." 셀러리 파일이 init.py 파일과 같은 폴더에 있음을 의미하므로, 그렇지 않은 경우 오류가 발생합니다. –