What specific version of Python are you using (2.7...x?)

On Wed, Apr 22, 2015 at 8:26 PM, John DeRosa <[email protected]>
wrote:

> Oh, sorry.
>
> Well, you’re using joblib. The joblib.load() call loads something and
> return a Python object into the symbol clf.
>
> It would seem you need to look at the object that joblib.load is
> reconstituting. This code snippet doesn’t give enough information to
> diagnose this, but if I were you, I’d probably try this:
>
> 1. What file does "joblib.load(os.path.join(CLASSIFIERS_PATH, filter_name,
> classifier_name))” read, and what object does it return?
>
> 2. Can you interactively run this code in the Python interpreter? Does it
> run OK, or does it throw an exception?
>
> 3. If it works on your development machine, try running it interactively
> on your production machine. Ssh into your production server and run the
> code.
>
> 4. What does dir(clf) return? Does the clf object have the methods you
> expect it to have?
>
>
> If you can get it to throw an exception when you run it from the
> interactive prompt, you can single-step it.
>
> John
>
>
> On Apr 22, 2015, at 4:10 PM, Cristian Javier Martinez <
> [email protected]> wrote:
>
> 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]> 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].
>> 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/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
> <https://groups.google.com/d/msgid/django-users/d38108d0-eda7-4e9e-9723-793a3290e030%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/C3FB1241-2E13-4137-96EF-3EED46FD1710%40solinea.com
> <https://groups.google.com/d/msgid/django-users/C3FB1241-2E13-4137-96EF-3EED46FD1710%40solinea.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/CALn3ei2mFK4Hd1g%2BQdiVi0XhhUAtyxB4Z-9PzSbj9L%2BXqpZVNA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to