“错误:角色处不存在关系”,芹菜与Django中的错误

时间:2018-08-27 20:33:52

标签: django django-models celery django-celery celerybeat

我有一个名为UserApp的模型,我通过Celery从一个异步任务中进行查询,但是从docker compose的输出中得到了以下错误。

  

postgres_1 |错误:在以下位置不存在关系“ users_userapp”   字符536

     

celery_1 | django.db.utils.ProgrammingError:关系   “ users_userapp”不存在

这是任务的代码:

@app.task(bind=True, default_retry_delay=50, max_retries=10, ignore_result=False)
def send_reset_password_email_task(self, muser):
    user = UserApp.objects.get(pk=muser.get('id'))
    print("send_reset_password_email_task user: ",user)

从视图执行的查询没有问题,以同样的方式,如果我在没有视图延迟的情况下同步调用任务,它也在没有问题的情况下运行,我已经运行了迁移并且问题也没有得到解决。 / p>

我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现了问题,这是因为docker compose文件中的配置错误,这是我的文件。

version: '2'

volumes:   postgres_data_develop: {}   postgres_backup_develop: {}

services:   postgres:
    build: ./compose/postgres
    volumes:
      - postgres_data_develop:/var/lib/postgresql/data
      - postgres_backup_develop:/backups
    environment:
      - POSTGRES_USER=cxc_web
    ports:
      - "5432:5432"

  django:
    build:
      context: .
      dockerfile: ./compose/django/Dockerfile-dev
    command: python /app/manage.py runserver_plus 0.0.0.0:8000
    depends_on:
      - postgres
    environment:
      - POSTGRES_USER=cxc_web
      - USE_DOCKER=yes
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    links:
      - postgres

  redis:
    image: "redis:alpine"

  #celery   celery:
    build: 
      context: .
      dockerfile: ./compose/django/Dockerfile-dev
    command: celery -A config.settings worker -l info
    #command: ./celery/run_celery.sh
    volumes:
      - .:/app
      #- .:/code
    depends_on:
      - postgres
      - redis   celery-beat:
    build: 
      context: .
      dockerfile: ./compose/django/Dockerfile-dev
    command: celery -A config.settings beat -l info
    volumes:
      - .:/app
    depends_on:
      - postgres
      - redis

由于“环境”的配置:-POSTGRES_USER = cxc_web,在django服务中,该应用程序已连接到“ cxc_web”数据库,而其他服务已使用该服务的默认名称连接到该数据库。情况称为postgres。因此,在两个芹菜胶束中还添加了“环境:-POSTGRES_USER = cxc_web”,并解决了问题。