Thanks for your reply John DeRosa but the question is about what is causing the exception because I'm not using threads at all and the error says "*'Thread' object has no attribute '_children'"*. I'm catching the error and printing it out before the return as you can see in the log.
El miércoles, 22 de abril de 2015, 19:13:55 (UTC-3), John DeRosa escribió: > > If you get an exception, the “except” clause will drop down into the > “return” statement, and classification_serializer will be referenced before > it’s assigned to. (Because it never was assigned to.) > > John > > On Apr 22, 2015, at 2:36 PM, Cristian Javier Martinez < > [email protected] <javascript:>> wrote: > > Hi! I'm using the django rest framework and successfully deployed an > application in a production environment but I'm having an strange error > related to threads when I call a method that performs a simple > classification task (using a scikit learn classifier) and I have no idea > what is causing the error. This is the method in views.py > > @api_view(['GET', 'POST']) > def classify_item(request): > """ > Classify item, or list classifications. > """ > if request.method == 'GET': > items = Item.objects.all() > serializer = ItemSerializer(items, many=True) > return Response(serializer.data) > > elif request.method == 'POST': > serializer = ItemSerializer(data=request.data['item']) > if serializer.is_valid(): > try: > item = serializer.data > filter_name = request.data['filter'] > > > # fix encoding > item_dict = {} > for key in item: > value = item[key] > if isinstance(value, unicode): > value = > value.encode('utf-8') > item_dict[key] = value > > classifier_name = > CLASSIFIER_NAME_BY_FILTER[filter_name] > > logger.debug("retrieving the persisted > classifier and classifing the item") > clf = > joblib.load(os.path.join(CLASSIFIERS_PATH, filter_name, classifier_name)) > > logger.debug("predicting probabilities") > data = pd.DataFrame([item_dict]) > > logger.debug("scoring item") > score = clf.predict(data)[0][1] > > logger.debug("score: {}".format(score)) > > > # create and save classification > classification = > Classification(classifier_name=classifier_name,score=score,item_id=item['_id']) > classification_serializer = > ClassificationSerializer(classification) > #classification_serializer.save() > except Exception as e: > logger.error("Ocurrio un error al intentar > parsear el item: {}".format(e)) > return Response(classification_serializer.data, > status=status.HTTP_201_CREATED) > > return Response(serializer.errors, > status=status.HTTP_400_BAD_REQUEST) > > And the output is: > > [22/Apr/2015 21:14:56] DEBUG [classifiers.views:63] retrieve the > classifier for the given sited_id and classify item > [22/Apr/2015 21:15:14] DEBUG [classifiers.views:66] predicting > probabilities > [22/Apr/2015 21:15:14] DEBUG [classifiers.views:69] scoring item > [22/Apr/2015 21:15:14] ERROR [classifiers.views:80] Ocurrio un error al > intentar parsear el item: *'Thread' object has no attribute '_children'* > [22/Apr/2015 21:15:14] ERROR [django.request:256] Internal Server Error: > /items/ > Traceback (most recent call last): > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/django/core/handlers/base.py", > > line 132, in get_response > response = wrapped_callback(request, *callback_args, **callback_kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/newrelic-2.50.0.39/newrelic/hooks/framework_django.py", > > line 499, in wrapper > return wrapped(*args, **kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/django/views/decorators/csrf.py", > > line 58, in wrapped_view > return view_func(*args, **kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/django/views/generic/base.py", > > line 71, in view > return self.dispatch(request, *args, **kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/newrelic-2.50.0.39/newrelic/hooks/component_djangorestframework.py", > > line 27, in _nr_wrapper_APIView_dispatch_ > return wrapped(*args, **kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/rest_framework/views.py", > > line 452, in dispatch > response = self.handle_exception(exc) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/rest_framework/views.py", > > line 449, in dispatch > response = handler(request, *args, **kwargs) > File > "/home/keepcon/meli_filters_env/local/lib/python2.7/site-packages/rest_framework/decorators.py", > > line 50, in handler > return func(*args, **kwargs) > File "/home/keepcon/meli_filters/classifiers/views.py", line 81, in > classify_item > return Response(classification_serializer.data, > status=status.HTTP_201_CREATED) > UnboundLocalError: local variable 'classification_serializer' referenced > before assignment > > I was having an UnicodeEncodeError but I fixed it by adding "the fix > encoding" step. I'll appreciate any cue about what could be causing this > error, I don't understand why the error says something about threads since > I'm not using threads. > > Thanks in advance! > > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] <javascript:>. > To post to this group, send email to [email protected] > <javascript:>. > Visit this group at http://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/da84ec7a-24a2-46b5-8d72-2d46c2d5a304%40googlegroups.com > > <https://groups.google.com/d/msgid/django-users/da84ec7a-24a2-46b5-8d72-2d46c2d5a304%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/d38108d0-eda7-4e9e-9723-793a3290e030%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

