Вызов функции представления в задаче celery beat (Django)

я хочу вызвать функцию del_cart() в views.py, с помощью celery beat tasks, но я не могу найти способ вызвать del_cart в del_cart_task

views.py

def del_cart(request):
    cart_obj = Cart(request)
    cart_obj.remove_all()
    return HttpResponse('your cart expire')

tasks.py

@app.task(name='remove_cart_session')
def del_cart_task():
    pass

url.py

urlpatterns = [
    path('add_cart/', views.AddCart.as_view(), name='add_cart'),
    path('show/', views.ShowCart.as_view(), name='show'),
    path('remove/', views.del_cart, name='remove'),
]

У вас все наоборот: вы вызываете задачу из представления:

views.py

from .tasks import del_cart_task  # if in the same directory level

def del_cart(request):
    try:
            cart_obj = Cart(request)
            del_cart_task.delay(cart=cart_obj)
    except Exception as ex:
            print(ex)  # or log or whatever you find useful
            return HttpResponse(status=500)
    else:
            return HttpResponse(content="your cart expire",
                                content_type='text/plain',
                                status=200)

tasks.py

@app.task(name='remove_cart_session')
def del_cart_task(cart):
    cart.remove_all()

url.py

urlpatterns = [
    path('add_cart/', views.AddCart.as_view(), name='add_cart'),
    path('show/', views.ShowCart.as_view(), name='show'),
    path('remove/', views.del_cart, name='remove'),
]
Вернуться на верх