Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#15337 closed (worksforme)

cyclic import dependency when extend builtin backend

Reported by: yi.codeplayer@… Owned by: nobody
Component: Core (Cache system) Version: 1.3-beta
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Russell Keith-Magee)

When writing a custom cache backend which inherit from django's builtin memcache backend, say mycache.py:

    from django.core.cache.backends.memcached import CacheClass as BaseCacheClass
    class MyCache(BaseCacheClass):
        ....

and set backend to "mycache.MyCache" in settings.py, then mycache.py and django.core.cache.__init__.py import each other.
Turn django.core.cache.__init__.py::cache object to be a SimpleLazyObject would solve this problem.

Attachments (1)

cache.patch (180 bytes ) - added by yi.codeplayer@… 13 years ago.

Download all attachments as: .zip

Change History (5)

by yi.codeplayer@…, 13 years ago

Attachment: cache.patch added

comment:1 by Russell Keith-Magee, 13 years ago

Description: modified (diff)
Resolution: worksforme
Status: newclosed

Can't reproduce -- I dropped a custom cache class defined as you describe, and don't the problem you describe. Looking at the code, I can't even work out what set of conditions would allow this to be reproduced -- I don't see any circular dependency. memcached doesn't import anything from the django.core.cache.

comment:2 by anonymous, 13 years ago

Resolution: worksforme
Status: closedreopened

You need to config this custom backend to the default cache backend in settings.py to reproduce this problem, django.core.cache would import the default cache backend.
sorry for poor english description.

comment:3 by Russell Keith-Magee, 13 years ago

Resolution: worksforme
Status: reopenedclosed

And that's exactly what I did. If you want to convince me, you'll need to provide a sample project.

comment:4 by anonymous, 13 years ago

I was wrong, there's no bug in django ;-)

Note: See TracTickets for help on using tickets.
Back to Top