Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Docker清除Django的缓存?_Python_Django_Docker_Docker Compose_Memcached - Fatal编程技术网

Python 如何使用Docker清除Django的缓存?

Python 如何使用Docker清除Django的缓存?,python,django,docker,docker-compose,memcached,Python,Django,Docker,Docker Compose,Memcached,我有一个Django项目,我正在使用memcached和Docker。当我在开发中使用sudocker compose up时,我希望清除整个缓存。在开发模式下,是否有一种方法可以运行cache.clear(),而不是像每次重新运行sudo docker compose-up时所述的那样禁用缓存 我不确定这是否应该进入: docker entrypoint.sh Dockerfile docker compose.yml 其他地方 docker-compose.yml: 根据,您可以添加在清除缓

我有一个Django项目,我正在使用memcached和Docker。当我在开发中使用
sudocker compose up
时,我希望清除整个缓存。在开发模式下,是否有一种方法可以运行
cache.clear()
,而不是像每次重新运行
sudo docker compose-up
时所述的那样禁用缓存

我不确定这是否应该进入:

  • docker entrypoint.sh
  • Dockerfile
  • docker compose.yml
  • 其他地方
  • docker-compose.yml: 根据,您可以添加在清除缓存的memcached服务之前执行的服务。由于看起来您正在使用Linux Alpine,您可以将此服务添加到
    docker compose.yml

    clearcache:
        command: [sh, -c, "python manage.py clear_cache"] 
    
    然后添加到
    memcached

    memcached:
        ...
        depends_on:
         - clearcache
    
    这里还有一个例子,它使用同一个命令,不依赖于单独的服务(尽管我个人不喜欢这样)

    对于缓存清除命令,有一些有用的讨论和帖子

    清除_cache.py:

    from django.core.management.base import BaseCommand
    from django.core.cache import cache
    
    class Command(BaseCommand):
        def handle(self, *args, **kwargs):
            cache.clear()
            self.stdout.write('Cleared cache\n')
    

    它应该是Dockerfile的CMD的一部分,但这取决于您如何组织docker配置。我相信它也可以进入docker compose.yml的
    命令
    键。如果你发布了你的设置,你会更容易根据它来推荐放置位置。谢谢@Nobilis。新增.yml。如果您认为这就是清除缓存所需的全部内容,请告诉我!谢谢你的帮助。
    from django.core.management.base import BaseCommand
    from django.core.cache import cache
    
    class Command(BaseCommand):
        def handle(self, *args, **kwargs):
            cache.clear()
            self.stdout.write('Cleared cache\n')