Revert to apline:3.11 to stay on Python 3.7 (3.8 has issues with channels)
This commit is contained in:
parent
9a2876469a
commit
14d5b0c69c
|
@ -1,4 +1,4 @@
|
|||
FROM alpine:3.11
|
||||
FROM alpine:3.10
|
||||
|
||||
RUN \
|
||||
echo 'installing dependencies' && \
|
||||
|
|
|
@ -544,7 +544,7 @@ CHANNEL_LAYERS = {
|
|||
}
|
||||
|
||||
CACHES["default"]["OPTIONS"] = {
|
||||
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
||||
"CLIENT_CLASS": "funkwhale_api.common.cache.RedisClient",
|
||||
"IGNORE_EXCEPTIONS": True, # mimics memcache behavior.
|
||||
# http://niwinz.github.io/django-redis/latest/#_memcached_exceptions_behavior
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
import logging
|
||||
|
||||
from django_redis.client import default
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RedisClient(default.DefaultClient):
|
||||
def get(self, key, default=None, version=None, client=None):
|
||||
try:
|
||||
return super().get(key, default=None, version=None, client=None)
|
||||
except ValueError as e:
|
||||
if "unsupported pickle protocol" in str(e):
|
||||
# pickle deserialization error
|
||||
logger.warn("Error while deserializing pickle value from cache")
|
||||
return default
|
||||
else:
|
||||
raise
|
||||
|
||||
def get_many(self, *args, **kwargs):
|
||||
try:
|
||||
return super().get_many(*args, **kwargs)
|
||||
except ValueError as e:
|
||||
if "unsupported pickle protocol" in str(e):
|
||||
# pickle deserialization error
|
||||
logger.warn("Error while deserializing pickle value from cache")
|
||||
return {}
|
||||
else:
|
||||
raise
|
|
@ -8,6 +8,7 @@ from django.core.serializers.json import DjangoJSONEncoder
|
|||
logger = logging.getLogger(__name__)
|
||||
channel_layer = get_channel_layer()
|
||||
group_add = async_to_sync(channel_layer.group_add)
|
||||
group_discard = async_to_sync(channel_layer.group_discard)
|
||||
|
||||
|
||||
def group_send(group, event):
|
||||
|
|
|
@ -14,7 +14,11 @@ class JsonAuthConsumer(JsonWebsocketConsumer):
|
|||
|
||||
def accept(self):
|
||||
super().accept()
|
||||
for group in self.groups:
|
||||
channels.group_add(group, self.channel_name)
|
||||
for group in self.scope["user"].get_channels_groups():
|
||||
groups = self.scope["user"].get_channels_groups() + self.groups
|
||||
for group in groups:
|
||||
channels.group_add(group, self.channel_name)
|
||||
|
||||
def disconnect(self, close_code):
|
||||
groups = self.scope["user"].get_channels_groups() + self.groups
|
||||
for group in groups:
|
||||
channels.group_discard(group, self.channel_name)
|
||||
|
|
Loading…
Reference in New Issue