Python 芹菜是否缓存任务?如何在开发环境中重新加载更改?
当使用芹菜、Docker、RabbitMQ和Django(使用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
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版本中已修复