mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
let tasks run async
This commit is contained in:
parent
0e2db232ae
commit
4baf714c85
@ -18,6 +18,7 @@ from django.views.decorators.csrf import csrf_exempt
|
|||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.exceptions import PermissionDenied, NotFound, NotAcceptable
|
from rest_framework.exceptions import PermissionDenied, NotFound, NotAcceptable
|
||||||
|
from django_q.tasks import async_task
|
||||||
|
|
||||||
from .models import WebhookEndpoint, WebhookMessage
|
from .models import WebhookEndpoint, WebhookMessage
|
||||||
|
|
||||||
@ -45,6 +46,7 @@ class WebhookView(CsrfExemptMixin, APIView):
|
|||||||
authentication_classes = []
|
authentication_classes = []
|
||||||
permission_classes = []
|
permission_classes = []
|
||||||
model_class = WebhookEndpoint
|
model_class = WebhookEndpoint
|
||||||
|
run_async = False
|
||||||
|
|
||||||
# Token
|
# Token
|
||||||
TOKEN_NAME = "Token"
|
TOKEN_NAME = "Token"
|
||||||
@ -69,12 +71,22 @@ class WebhookView(CsrfExemptMixin, APIView):
|
|||||||
self.validate_token(payload, headers, request)
|
self.validate_token(payload, headers, request)
|
||||||
# process data
|
# process data
|
||||||
message = self.save_data(payload, headers, request)
|
message = self.save_data(payload, headers, request)
|
||||||
self.process_payload(message, payload, headers)
|
if self.run_async:
|
||||||
|
async_task(self._process_payload, message.id)
|
||||||
|
else:
|
||||||
|
message.worked_on = self.process_payload(message, payload, headers)
|
||||||
|
message.save()
|
||||||
|
|
||||||
# return results
|
# return results
|
||||||
return_kwargs = self.get_result(payload, headers, request)
|
return_kwargs = self.get_result(payload, headers, request)
|
||||||
return Response(**return_kwargs)
|
return Response(**return_kwargs)
|
||||||
|
|
||||||
|
def _process_payload(self, message_id):
|
||||||
|
message = WebhookMessage.objects.get(message_id=message_id)
|
||||||
|
process_result = self.process_payload(message, message.body, message.header)
|
||||||
|
message.worked_on = process_result
|
||||||
|
message.save()
|
||||||
|
|
||||||
# To be overridden
|
# To be overridden
|
||||||
def init(self, request, *args, **kwargs):
|
def init(self, request, *args, **kwargs):
|
||||||
self.token = ''
|
self.token = ''
|
||||||
|
Loading…
Reference in New Issue
Block a user