Я использую python muiltithreading для выполнения задачи, которая длится от 2 до 3 минут, я сделал одну конечную точку API в проекте django.
Вот мой код -
from threading import Thread
def myendpoint(request):
print("hello")
lis = [ *args ]
obj = Model.objects.get(name =" jax")
T1 = MyThreadClass(lis, obj)
T1.start()
T1.deamon = True
return HttpResponse("successful", status=200)
Class MyThreadClass(Thread):
def __init__(self,lis,obj):
Thread.__init__(self)
self.lis = lis
self.obj = obj
def run(self):
for i in lis:
res =Func1(i)
self.obj.someattribute = res
self.obj.save()
def Func1(i):
'''Some big codes'''
context =func2(*args)
return context
def func2(*args):
"' some codes "'
return res
Посредством этого muiltithreading я могу получить быстрый ответ от сервера django на вызов функции конечной точки, поскольку большая задача брошена в другой шаг и выполнение потока конечной точки прекращается в его операторе возврата, не отслеживая порожденный поток.
Эта часть работает для меня правильно, если я нажал на URL один раз, но если я нажал на URL 2 раза, как только 1-е выполнение начинается, затем по 2-му запросу я вижу свой запрос на консоли. Но я не могу получить от него никакого ответа.
И если я получаю один и тот же URL-адрес от 2 разных клиентов одновременно, оба отдельных данных смешиваются, и я вижу несколько записей запроса одного клиента на другие данные клиента.
Я тестирую его на своем локальном django runserver.
Так что, ребята, пожалуйста, помогите, и я знаю о сельдерее, поэтому не рекомендую сельдерей. Просто скажите мне, почему это происходит, или это можно исправить. Поскольку моя задача не так долго использовать сельдерей. Я хочу достигнуть этого путем многократного чтения.