問題1:
celery任務隊列一般要使用redis,但是容器內(nèi)的django要訪問本機的redis是十分麻煩的
解決2:
在容器內(nèi)安裝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://:1234qwer@127.0.0.1:6379/0', # Redis 服務器連接信息
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
# 使用 Redis 緩存作為默認緩存后端
CACHE_BACKEND = 'django_redis.cache.RedisCache'
celery.py
# 設置 Redis 作為任務隊列和結(jié)果后端
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:
如何啟動容器內(nèi)的celery任務隊列文章來源:http://www.zghlxwxcb.cn/news/detail-626222.html
解決2:
試過很多方法,包括在Dockerfile中啟動一個.sh文件(同時有啟動django和任務隊列的命令,Dockerfile只能寫一個cmd命令)但是效果都不好,最終的方法是在根目錄創(chuàng)建.sh文件,使用docker命令行訪問這個文件文章來源地址http://www.zghlxwxcb.cn/news/detail-626222.html
- 在django根目錄下創(chuàng)建start_celery.sh
- 在.sh文件寫入命令行
#!/bin/bash
celery -A RemoteCut worker -l info -P eventlet
- Dockerfile中設置
- 在這里插入代碼片
# 設置工作目錄
WORKDIR /remote_cut
# 復制項目文件到容器中
COPY . /remote_cut
COPY ./RemoteCut/settings.py /remote_cut/RemoteCut/
COPY ./start_celery.sh /remote_cut/
- 命令行啟動任務隊列
docker exec -it 容器名稱或者容器id /remote_cut/start_celery.sh
到了這里,關于docker容器內(nèi)的django啟動celery任務隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!