Вызов функции представления в задаче 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'),
]