Следовал инструкции по подключению celery здесь. Сначала все работало, задачи попадали в очередь, но не выполнялись. Переустановил celery (более современную версию) - все перестало работать. Пробовал переустанавливать брокер и разные версии celery результат тот же. Искал много информации в поисковиках - ничего не помогло. Может подскажет кто? Приведу немного кода.
Successfully installed amqp-5.0.5 billiard-3.6.3.0 celery-5.0.5 kombu-5.0.2 vine-5.0.0
celery.py
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'kosmetica.settings')
app = Celery('kosmetica')<code></code>app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
task.py (orders)
from kosmetica.celery import app
from django.core.mail import send_mail
from .models import Order
@app.task
def order_created(order_id):
"""
Задача для отправки уведомления по электронной почте при успешном создании заказа.
"""
order = Order.objects.get(id=order_id)
subject = 'Заказ №. {}'.format(order_id)
message = 'Добрый день! {},\n\nВы успешно сформировали заказ.\
Ваш заказ № {}.'.format(order.first_name,
order.id)
mail_sent = send_mail(subject,
message,
'admin@kosmtica.com',
[order.email])
return mail_sent
urls.py (orders)
from . import views
urlpatterns = [
url(r'^create/$', views.order_create, name='order_create'),
]
views.py (orders)
from cart.cart import Cart
from .tasks import order_created
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order,
product=item['product'],
price=item['price'],
quantity=item['quantity'])
# очистка корзины
cart.clear()
# запуск асинхронной задачи
order_created.delay(order.id)
return render(request, 'orders/order/created.html',
{'order': order})
else:
form = OrderCreateForm
return render(request, 'orders/order/create.html',
{'cart': cart, 'form': form})