Re: Thread safety with view arguments in class based views
That last part refers to the way Python handles arguments and the like. Whenever you have a complex object, such as an array, Python does not make a new copy of the object each time the view function is called. Instead, it passes a reference to the object, which means that if you change that object inside the view, it changes the original, which is shared across multiple calls to the same function.
If you don't modify the object, then all is well.
On Wednesday, May 16, 2012 7:18:49 PM UTC-4, Chris B wrote:
According to the docs on the generic class based views:--Each request served by a View has an independent state; therefore, it is safe to store state variables on the instance (i.e., self.foo = 3 is a thread-safe operation).
andAny argument passed into as_view() will be assigned onto the instance that is used to service a request.but then right after that, it says:Arguments passed to a view are shared between every instance of a view. This means that you shoudn't use a list, dictionary, or any other variable object as an argument to a view. If you did, the actions of one user visiting your view could have an effect on subsequent users visiting the same view.
I'm confused then. Under what conditions do arguments passed to ClassView.as_view() become bound to that instance vs when do tehy get bound to the class as a whole (between requests)?
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/Fr2hbFuJOwoJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home