国外网站备案查询,摄影网站建设任务书,聊城市 网站制作,免费一键生成转账截图问题1#xff1a;
celery任务队列一般要使用redis#xff0c;但是容器内的django要访问本机的redis是十分麻烦的
解决2#xff1a;
在容器内安装redis#xff0c;或者单独启动一个redis的容器#xff0c;我是单独启动一个redis容器
安装redis镜像docker pull redis启动…问题1
celery任务队列一般要使用redis但是容器内的django要访问本机的redis是十分麻烦的
解决2
在容器内安装redis或者单独启动一个redis的容器我是单独启动一个redis容器
安装redis镜像docker pull redis启动redis容器docker run -d --name redis_container redis查看redis的IP docker inspect -f “{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}” redis_container我的redis容器IP是172.17.0.2在django中配置redis
setting.py
# Redis 缓存配置
CACHES {default: {BACKEND: django_redis.cache.RedisCache,LOCATION: redis://172.17.0.2:6379/0, # Redis 服务器连接信息# LOCATION: redis://:1234qwer127.0.0.1:6379/0, # Redis 服务器连接信息OPTIONS: {CLIENT_CLASS: django_redis.client.DefaultClient,}}
}# 使用 Redis 缓存作为默认缓存后端
CACHE_BACKEND django_redis.cache.RedisCachecelery.py
# 设置 Redis 作为任务队列和结果后端
app.conf.broker_url redis://172.17.0.2:6379/5
app.conf.result_backend redis://172.17.0.2:6379/4目前redis可以正常访问我的redis缓存使用正常
问题2
如何启动容器内的celery任务队列
解决2
试过很多方法包括在Dockerfile中启动一个.sh文件同时有启动django和任务队列的命令Dockerfile只能写一个cmd命令但是效果都不好最终的方法是在根目录创建.sh文件使用docker命令行访问这个文件
在django根目录下创建start_celery.sh在.sh文件写入命令行
#!/bin/bashcelery -A RemoteCut worker -l info -P eventletDockerfile中设置在这里插入代码片 # 设置工作目录
WORKDIR /remote_cut# 复制项目文件到容器中
COPY . /remote_cutCOPY ./RemoteCut/settings.py /remote_cut/RemoteCut/COPY ./start_celery.sh /remote_cut/命令行启动任务队列
docker exec -it 容器名称或者容器id /remote_cut/start_celery.sh