Discussion:
Chatbot using Django Channels. Persist a python object in a scope?
Ryan Nowakowski
7 years ago
Permalink
I've never used pytransitions. Typically persistent state in Django is stored in the model instead of objects in memory. This allows you to easily scale and also recover state if your app process stops.
...
--
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 django-users+***@googlegroups.com.
To post to this group, send email to django-***@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/9898A95D-95E1-453A-8392-B2D90F9B7D4A%40fattuba.com.
For more options, visit https://groups.google.com/d/optout.
Andrew Godwin
7 years ago
Permalink
Hi!

You can indeed have things persist for the entire scope - the Consumer (or
any other ASGI app) does exactly this, and so if you're in a consumer you
can just store things on "self". That'll be tied to a specific socket and
garbage-collected once it's done (on Channels 2 only - channels 1 didn't do
this!)

Of course, I am assuming you're meaning "per websocket". If you want to use
another protocol - like the ASGI Telegram server I cooked up - those scopes
are per-user but sometimes get garbage collected after an idle period with
no communication. You should think about this even for WebSocket; what
happens if the user's socket reconnects? Does the state machine reset? If
not, you need to store state somewhere externally from the socket handling
code.

Andrew

Andrew
...
--
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 django-users+***@googlegroups.com.
To post to this group, send email to django-***@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAFwN1uq3emdzMgkqncBumhgday%3DjnLZPqeORhc28YfwZu5Fe%2BA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Rithwik Cherian
7 years ago
Permalink
Hi Andrew,

Great. That's good to know. :)
I'll try it out right away.
Yeah, I read somewhere that it is available from Channels 2. I am using the
latest version anyways. :)

Well, pardon my usage. I am not 100% sure about what exactly these terms
(websocket, asgi etc) mean exactly (I'm very new to all this), so I may
have made a few mistakes when talking about them.
As for what happens when connection is lost or reconnects, I'm planning to
store the state in a session variable as well to be safe.
...
--
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 django-users+***@googlegroups.com.
To post to this group, send email to django-***@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/0a2dc931-cd92-43ab-a6ee-9536dd018f9f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Rithwik Cherian
7 years ago
Permalink
Hey Ryan.
The problem is actually not specific to pytransitions. But anyways, I
wanted to persist an object in memory and not have to retrieve it from the
DB every time. Although I'm not sure which is better for scaling (please
give suggestions if you know more). As for recovering state, I'm planning
to store the state in a session variable as a fail safe.
...
--
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 django-users+***@googlegroups.com.
To post to this group, send email to django-***@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/cc8f52ad-4874-4345-a8e4-905b63f42f39%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Loading...