Django cycles the session key upon login. The rationale (that I don't understand) is in this pull request:
When logging in, change the session key whilst preserving any existing sesssion. This means the user will see their session preserved across a login boundary, but somebody snooping the anonymous session key won't be able to view the authenticated session data.
Cycling the session key is awkward if you wish to easily associate unauth behavior with a later logged-in user. This answer suggests simply disabling cycle_key.
What risks are there in disabling cycle_key? (Related to the comment above, or others.)
EDIT: Okay, I think I understand the rationale above. It literally means that if you snooped unauth actions, you won't be able to associate them with auth actions. I can see how that might be nice, but 1) ideally both unauth and auth actions are protected (e.g., https), 2) that security benefit has to be weighed with the benefit of preserving the session key.
EDIT 2: The pull request is from 2008, when the https landscape was way different. Now it's >=90% https.