试图在docker上为芹菜添加自动重新加载, 由于我需要开发和测试任务,配置中的更改 我想有自动重新加载选项,而不需要每次重新加载码头工人
在搜索之后我去了watchmedo但它不起作用, 仍然需要在每次更改时重新加载docker
请参见撰写文件:
worker:
build:
dockerfile: DockerfileCelery
context: .
command: watchmedo auto-restart --directory=./ --pattern=*.py --recursive -- celery worker --app=worker.celery --loglevel=info --logfile=logs/celery.log
volumes:
- ./multi/celery_app:/usr/src/app
environment:
- CELERY_BROKER_URL=redis://redisjson:6379
- CELERY_RESULT_BACKEND=redis://redisjson:6379
depends_on:
- redisjson
- ws
非常感谢您的帮助
########################################## ##########################################
更新:
仍然不起作用
我运行一个虚拟环境(Ubuntu)
cellery.py
from decouple import AutoConfig
cwd = os.getcwd()
DOTENV_FILE = cwd + '/proj/config/.env'
config = AutoConfig(search_path='DOTENV_FILE')
app = Celery('proj',
broker=config('CELERY_BROKER_URL'),
backend=config('CELERY_RESULT_BACKEND'),
include=['proj.tasks'])
app.conf.update(
result_expires=3600,
)
if __name__ == '__main__':
app.start()
tasks.py
from .celery import app
@app.task
def add(x, y):
return x + y
将芹菜纺成:
watchmedo auto-restart --directory=proj/ -p '*.py' --recursive -- celery -A proj worker --concurrency=1 --loglevel=INFO
它正在运行,工作人员正在处理任务。 但是,如果在tasks.py中进行更改,则不重新加载。 我需要重启芹菜
即使您最终使用Docker Compose部署应用程序,也不必将其用于开发,您可以使用更方便的环境进行日常开发工作
芹菜将其作业存储在Redis实例中。如果您在Docker之外进行开发工作,则需要确保可以从主机访问Redis实例。相反,您不需要替换标准worker的代码或命令(我们现在不运行它)
然后您可以启动依赖服务,但不能启动工作者本身
在主机系统上,创建一个普通的Python虚拟环境(如果您还没有)。(有各种工具来管理这些,我使用低级工具作为示例。)
您还需要使用上面添加的
ports:
将芹菜相关的环境变量设置为指向已发布的Redis现在,您应该能够直接运行worker,将调试器附加到它,在IDE中处理代码,使用实时重新加载工具,等等
相关问题 更多 >
编程相关推荐