Sorl-thumbnail: ΠœΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π° Π½Π΅ связана с исходным ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 14 ΠΎΠΊΡ‚. 2014  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: jazzband/sorl-thumbnail

Π― наблюдал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:

На ΠΌΠΎΠ΅ΠΉ страницС Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π΅Π³Π° шаблона {% thumbnail %} ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ исходного изобраТСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅. Нравится:

{% thumbnail user.get_profile.avatar_image "46x46" crop="center" as im %} .. {% endthumbnail %}
{% thumbnail user_profile.avatar_image "187x187" crop="center" as im %} .. {% endthumbnail %}

(Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… шаблонов Django)

Если sorl-thumbnail Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ эскизы, ΠΎΠ½ создаст ΠΈΡ…, ΠΊΠ°ΠΊ ΠΈ оТидалось. Но ΠΎΠ΄ΠΈΠ½ ΠΈΠ· эскизов Π½Π΅ упоминаСтся Π² записи sorl-thumbnail||thumbnails||xxx Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π°.

ПослС Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° страницы Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ выглядит Ρ‚Π°ΠΊ:

# select * from thumbnail_kvstore;
                             key                              |                                                                   value                                                                    
--------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------
 sorl-thumbnail||image||3314722c993608c1dab30949d2504172      | {"storage": "outdoorish.storage.OverwriteStorage", "name": "profiles/avatars/2205.jpg", "size": [300, 423]}
 sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac      | {"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/7c/ab/7cab89bcadad6122d441e6d5443fccc2.jpg", "size": [187, 187]}
 sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172 | ["4d545ece8fb09c9176996000cddc0fac"]
 sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d      | {"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/b2/71/b27103adff0bdbba7d05fc98a51be131.jpg", "size": [46, 46]}
(4 rows)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ связано с исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ? ЯвляСтся Π»ΠΈ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΌ? (ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ sorl.thumbnail.delete .)

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ sorl-thumbnail==11.12.1b

Π­Ρ‚ΠΎ ΠΆΡƒΡ€Π½Π°Π» создания эскизов Django:

Π›ΠΎΠ³ получСния/создания 1-ΠΉ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹:

2014-10-14 14:58:35,131 DEBUG base Getting thumbnail for file [profiles/avatars/2205.jpg] at [187x187] | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/sorl/thumbnail/base.py:67 (get_thumbnail), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,182 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac' ; args=(u'sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,210 DEBUG base Creating thumbnail file [cache/7c/ab/7cab89bcadad6122d441e6d5443fccc2.jpg] at [187x187] with [{'rounded': None, 'padding_color': '#ffffff', 'format': 'JPEG', 'colorspace': 'RGB', 'cropbox': None, 'padding': False, 'upscale': True, 'crop': u'center', 'image_info': {'jfif_version': (1, 1), 'jfif': 257, 'jfif_unit': 1, 'jfif_density': (72, 72), 'dpi': (72, 72)}, 'quality': 95}] | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/sorl/thumbnail/base.py:148 (_create_thumbnail), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,248 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||3314722c993608c1dab30949d2504172' ; args=(u'sorl-thumbnail||image||3314722c993608c1dab30949d2504172',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,273 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||3314722c993608c1dab30949d2504172' ; args=(u'sorl-thumbnail||image||3314722c993608c1dab30949d2504172',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,308 DEBUG util (0.001) INSERT INTO "thumbnail_kvstore" ("key", "value") VALUES ('sorl-thumbnail||image||3314722c993608c1dab30949d2504172', '{"storage": "outdoorish.storage.OverwriteStorage", "name": "profiles/avatars/2205.jpg", "size": [300, 423]}'); args=(u'sorl-thumbnail||image||3314722c993608c1dab30949d2504172', '{"storage": "outdoorish.storage.OverwriteStorage", "name": "profiles/avatars/2205.jpg", "size": [300, 423]}') | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,345 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac' ; args=(u'sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,371 DEBUG util (0.000) INSERT INTO "thumbnail_kvstore" ("key", "value") VALUES ('sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac', '{"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/7c/ab/7cab89bcadad6122d441e6d5443fccc2.jpg", "size": [187, 187]}'); args=(u'sorl-thumbnail||image||4d545ece8fb09c9176996000cddc0fac', '{"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/7c/ab/7cab89bcadad6122d441e6d5443fccc2.jpg", "size": [187, 187]}') | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,426 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172' ; args=(u'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,449 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172' ; args=(u'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416
2014-10-14 14:58:35,472 DEBUG util (0.000) INSERT INTO "thumbnail_kvstore" ("key", "value") VALUES ('sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172', '["4d545ece8fb09c9176996000cddc0fac"]'); args=(u'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172', '["4d545ece8fb09c9176996000cddc0fac"]') | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412452124416

Π›ΠΎΠ³ получСния/создания 2-Π³ΠΎ эскиза:

2014-10-14 14:58:37,314 DEBUG base Getting thumbnail for file [profiles/avatars/2205.jpg] at [46x46] | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/sorl/thumbnail/base.py:67 (get_thumbnail), PID:8096 Thread:140412426946304
2014-10-14 14:58:37,333 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d' ; args=(u'sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412426946304
2014-10-14 14:58:37,345 DEBUG base Creating thumbnail file [cache/b2/71/b27103adff0bdbba7d05fc98a51be131.jpg] at [46x46] with [{'rounded': None, 'padding_color': '#ffffff', 'format': 'JPEG', 'colorspace': 'RGB', 'cropbox': None, 'padding': False, 'upscale': True, 'crop': u'center', 'image_info': {'jfif_version': (1, 1), 'jfif': 257, 'jfif_unit': 1, 'jfif_density': (72, 72), 'dpi': (72, 72)}, 'quality': 95}] | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/sorl/thumbnail/base.py:148 (_create_thumbnail), PID:8096 Thread:140412426946304
2014-10-14 14:58:37,386 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d' ; args=(u'sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412426946304
2014-10-14 14:58:37,390 DEBUG util (0.001) INSERT INTO "thumbnail_kvstore" ("key", "value") VALUES ('sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d', '{"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/b2/71/b27103adff0bdbba7d05fc98a51be131.jpg", "size": [46, 46]}'); args=(u'sorl-thumbnail||image||256cd182b71debc11e8aae0ed8ee1a9d', '{"storage": "django.core.files.storage.FileSystemStorage", "name": "cache/b2/71/b27103adff0bdbba7d05fc98a51be131.jpg", "size": [46, 46]}') | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412426946304
2014-10-14 14:58:37,429 DEBUG util (0.001) SELECT "thumbnail_kvstore"."key", "thumbnail_kvstore"."value" FROM "thumbnail_kvstore" WHERE "thumbnail_kvstore"."key" = 'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172' ; args=(u'sorl-thumbnail||thumbnails||3314722c993608c1dab30949d2504172',) | File:/home/anton/.virtualenvs/outdoorish/lib/python2.7/site-packages/django/db/backends/util.py:50 (execute), PID:8096 Thread:140412426946304

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ покопался Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ KVStore._set_raw() (Π² cached_db_kvstore.py ) (Бсылка Π½Π° строку ΠΊΠΎΠ΄Π°: https://github.com/mariocesar/sorl- thumbnail/blob/master/sorl/thumbnail/kvstores/cached_db_kvstore.py#L43 )

Π­Ρ‚ΠΎ ситуация:
Ѐункция _set_raw() вызываСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (A):

key: thumbnail||thumbnails||3314722c993608c1dab30949d2504172
value: ["4d545ece8fb09c9176996000cddc0fac", "256cd182b71debc11e8aae0ed8ee1a9d"]

Π’ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ KV (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Postgres) ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ запись с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (B):

key: thumbnail||thumbnails||3314722c993608c1dab30949d2504172
value: ["4d545ece8fb09c9176996000cddc0fac"]

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:
Π’Π΅ΠΏΠ΅Ρ€ΡŒ _set_raw() Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ KVStoreModel.objects.get_or_create() ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ запись ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ((A), Ρ‚Π°, Π³Π΄Π΅ имССтся ссылка Π½Π° ΠΎΠ΄ΠΈΠ½ эскиз). ПослС этого ΠΎΠ½ сохраняСт запись со ссылками Π½Π° Π΄Π²Π΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ (B) Π² кэш (это django.core.cache.backends.locmem.LocMemCache ).

Новая вСрсия записи (B) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ сохраняСтся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Если я мСняю ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, обновляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· эскизов, Π΄Ρ€ΡƒΠ³ΠΎΠΉ остаСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ ссылаСтся запись thumbnail||thumbnails||3314722c993608c1dab30949d2504172 .

Π― надСюсь, Ρ‡Ρ‚ΠΎ описал ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ³ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это! Бпасибо!

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π•ΡΡ‚ΡŒ Π»ΠΈ обновлСния ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ? ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ связано с исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π°?

Π― Π±Ρ‹ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, Π½ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ!

Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ покопался Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ KVStore._set_raw() (Π² cached_db_kvstore.py ) (Бсылка Π½Π° строку ΠΊΠΎΠ΄Π°: https://github.com/mariocesar/sorl- thumbnail/blob/master/sorl/thumbnail/kvstores/cached_db_kvstore.py#L43 )

Π­Ρ‚ΠΎ ситуация:
Ѐункция _set_raw() вызываСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (A):

key: thumbnail||thumbnails||3314722c993608c1dab30949d2504172
value: ["4d545ece8fb09c9176996000cddc0fac", "256cd182b71debc11e8aae0ed8ee1a9d"]

Π’ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ KV (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Postgres) ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ запись с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (B):

key: thumbnail||thumbnails||3314722c993608c1dab30949d2504172
value: ["4d545ece8fb09c9176996000cddc0fac"]

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°:
Π’Π΅ΠΏΠ΅Ρ€ΡŒ _set_raw() Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ KVStoreModel.objects.get_or_create() ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ запись ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ((A), Ρ‚Π°, Π³Π΄Π΅ имССтся ссылка Π½Π° ΠΎΠ΄ΠΈΠ½ эскиз). ПослС этого ΠΎΠ½ сохраняСт запись со ссылками Π½Π° Π΄Π²Π΅ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Ρ‹ (B) Π² кэш (это django.core.cache.backends.locmem.LocMemCache ).

Новая вСрсия записи (B) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ сохраняСтся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Если я мСняю ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, обновляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· эскизов, Π΄Ρ€ΡƒΠ³ΠΎΠΉ остаСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ ссылаСтся запись thumbnail||thumbnails||3314722c993608c1dab30949d2504172 .

Π― надСюсь, Ρ‡Ρ‚ΠΎ описал ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ³ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это! Бпасибо!

Π― Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΠΊ :) ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, слСйтС этот фикс, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ΅Π½!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ