首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芹菜缓存任务吗?如何在dev环境中重新加载更改?

芹菜缓存任务吗?如何在dev环境中重新加载更改?
EN

Stack Overflow用户
提问于 2020-04-18 17:12:41
回答 1查看 2K关注 0票数 1

当使用芹菜、码头、RabbitMQ和Django (与django-celery-resultsdjango-celery-beat一起使用)时,我能够按照教程加载一个简单的任务。

但是,当我对任务进行更改并重新加载服务器(docker-compose downdocker-compose up)时,这些更改不会得到反映。芹菜是否在某个地方缓存任务/如何在开发环境中重新加载它们?本教程设置了CELERY_CACHE_BACKEND = 'django-cache',但我假设这是由docker-compose down销毁的

例如,在CELERY_BEAT_SCHEDULE中从tasks.py和中删除任务并不会阻止它在服务器重新启动时加载.

celery.py:

代码语言:javascript
复制
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()

proj/_ init __ .py:

代码语言:javascript
复制
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)

tasks.py:

代码语言:javascript
复制
from __future__ import absolute_import, unicode_literals
from celery import shared_task

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

settings.py:

代码语言:javascript
复制
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
        }
}
EN

回答 1

Stack Overflow用户

发布于 2020-04-18 17:22:10

芹菜中没有自动重装功能(第4版删除了它,并进行了实验)。

--自动重新加载功能已被删除. 这是一个实验性的特性,不包括在我们的反对时间表保证。该标志被完全移除,因此工作人员将在启动时崩溃。幸运的是,此标志没有在生产系统中使用。

您可以编写自己的解决方案,使用看门狗或其他工具监视文件更改以重新启动工作人员,也可以只重新启动容器/重新运行工作人员。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61293143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档