Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 芹菜是否缓存任务?如何在开发环境中重新加载更改?_Python_Django_Docker_Celery_Django Celery - Fatal编程技术网

Python 芹菜是否缓存任务?如何在开发环境中重新加载更改?

Python 芹菜是否缓存任务?如何在开发环境中重新加载更改?,python,django,docker,celery,django-celery,Python,Django,Docker,Celery,Django Celery,当使用芹菜、Docker、RabbitMQ和Django(使用Django芹菜结果和Django芹菜节拍)时,我能够按照以下命令加载简单任务 但是,当我更改任务并重新加载服务器时(docker compose down,docker compose up),这些更改不会反映出来。芹菜是否在某处缓存任务/在开发环境中如何重新加载任务?本教程设置了CELERY\u CACHE\u BACKEND='django CACHE',但我假设这是由docker compose down破坏的 例如,从set

当使用芹菜、Docker、RabbitMQ和Django(使用
Django芹菜结果
Django芹菜节拍
)时,我能够按照以下命令加载简单任务

但是,当我更改任务并重新加载服务器时(
docker compose down
docker compose up
),这些更改不会反映出来。芹菜是否在某处缓存任务/在开发环境中如何重新加载任务?本教程设置了
CELERY\u CACHE\u BACKEND='django CACHE'
,但我假设这是由
docker compose down
破坏的

例如,从settings.py中的tasks.py和
cellery\u BEAT\u SCHEDULE
中删除任务不会阻止服务器重新启动时加载任务。

芹菜:

from __future__ import absolute_import, unicode_literals

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
项目/初始项目:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
tasks.py:

from __future__ import absolute_import, unicode_literals
from celery import shared_task

@shared_task
def hello_world():
   return print('hello world!')
settings.py:

CELERY_BROKER_URL = 'pyamqp://rabbitmq:5672'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_BEAT_SCHEDULE = {
    'hello':
        {
            'task': 'proj.tasks.hello_world',
            'schedule':
                crontab()  # execute every minute
        }
}

芹菜中没有自动加载功能(在版本4中被删除,这是实验性的)

--autoreload功能已被删除

这是一个实验性的特性,不在我们的讨论范围之内 时限保证。该标志已完全移除,因此工作人员将 启动时出现崩溃。幸运的是,这面旗帜没有用在 生产系统


您可以编写自己的解决方案,使用watchdog或其他方法来监视文件更改,以重新启动worker,或者只是重新启动容器/重新运行worker,谢谢。我不明白的是,当我使用
docker compose down
时,应该重新启动容器,不是吗?它是如何持续的?到底发生了什么,你是如何确定代码没有改变的?停止你的容器就足够了你使用什么操作系统和哪个docker版本Windows 10 Pro,docker版本19.03.8,构建AFACB8它可能是这样,猛击你的容器看看是否有文件更改,也回答上面的第一个问题->这在2205版本中已修复