使用Python連線Azure Redis服務,因為在程式碼中使用的是Djange-redis元件,所以通過如下的設定連線到Azure Redis服務:
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
但是當部署到AKS中後,發現一直報錯 [ERROR][testdjangeredis.py:109]Error while reading from xxxxxxxxx.redis.cache.chinacloudapi.cn:6380 : (104, 'Connection reset by peer')
檢視Django-redis的官方檔案,對 cache backend 中Location的介紹為:
URL 格式舉例
支援三種 URL scheme :
指定資料庫數位的方法:
在仔細對比設定,發現連線Azure Redis的時候使用SSL 6380埠,而Djange-Redis的設定中 scheme 還繼續使用的 redis://,而不是rediss://,所以導致 Connection reset。
為了解決以上問題,直接修改Location設定為:rediss://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1 即可!
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "rediss://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
django-redis 中文檔案:https://django-redis-chs.readthedocs.io/zh_CN/latest/index.html
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!