Невозможно обработать исключение в django при реализации многопоточности

views.py:

from threading import Thread

class PoliceJobs:
    def call_police_defence_jobs(request):
        job         = PoliceDefenceJobs.police_jobs(request)
        sleep(0.5)
        job_details = PoliceDefenceJobDetails.police_defence_job_details(request)
        message = call_all(job,job_details)
        return HttpResponse(message)

    def call_statewise_police_jobs(request):
        job         = PoliceDefenceJobs.statewise_police_jobs(request)
        sleep(0.5)
        job_details = PoliceDefenceJobDetails.statewise_police_job_details(request)
        message = call_all(job,job_details)
        return HttpResponse(message)

def police_jobs(request):
    try:
        t1 = Thread(target=PoliceJobs.call_police_defence_jobs,args=[request])
        t2 = Thread(target=PoliceJobs.call_statewise_police_jobs,args=[request])
        t1.start()
        t2.start()
        t1.join()
        t2.join()
        return HttpResponse("success")
    except:
        return HttpResponse("error")

urls.py

from django.urls import path
from .views import police_jobs

urlpatterns = [
    path('finish_police_jobs/', police_jobs),
]

ошибка в оболочке:

Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/home/soubhagya/Desktop/carrier-circle/backend/finalize/views.py", line 840, in call_police_defence_jobs
    job         = PoliceDefenceJobs.police_jobs(request)
AttributeError: type object 'PoliceDefenceJobs' has no attribute 'police_jobs'

в классе PoliceJobs я изменил имя функции на PoliceDefenceJobs.police_jobs, которого не существует, чтобы вызвать ошибку.

Здесь я делаю ошибку и обрабатываю ее, добавляя блок except, но он по-прежнему показывает ошибку в консоли, но не в браузере. в браузере он показывает успех, хотя есть исключение.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
147
1

Ответы 1

Исключения в потоках не распространяются на поток, который их создал. См. Обходной путь в Поймать исключение потока в вызывающем потоке в Python.

Другие вопросы по теме