You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让django-q与django-tenants协同工作?遇表不存在错误

解决django-q与django-tenants协同工作的表不存在问题

问题根源

你把django-q放在了TENANT_APPS中,这会导致django-q的表被创建在各个租户的独立schema下,而django-q默认尝试访问public schema的表,因此出现"relation 'django_q_schedule' does not exist"错误。

修复步骤

  • 调整django-q的应用归属
    把django-q从TENANT_APPS移到SHARED_APPS,这样它的表会被创建在public共享schema中:

    SHARED_APPS = (
        'django_tenants',  # mandatory
        'companies', # 租户模型所在应用
        'accounts.apps.AccountsConfig',
        'django.contrib.humanize',
        'django_q',  # 移到这里
        
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    )
    
    TENANT_APPS = (
        # 移除'django_q'
        'loads',
        'dispatchers',
        'accounts.apps.AccountsConfig',
        
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    )
    
    INSTALLED_APPS = list(SHARED_APPS) + [app for app in TENANT_APPS if app not in SHARED_APPS]
    
  • 重新执行共享应用迁移
    运行命令在public schema创建django-q的表:

    python manage.py migrate_schemas --shared
    
  • 解决django-tenants-q的mscluster命令问题

    • 首先确认django_tenants_q已加入SHARED_APPS:
      SHARED_APPS = (
          # ...其他应用
          'django_tenants_q',
      )
      
    • 如果命令仍无法运行,手动配置django-q集群指向public schema:
      在settings.py中添加或修改Q_CLUSTER配置:
      Q_CLUSTER = {
          'name': 'DjangoORM',
          'workers': 4,
          'timeout': 90,
          'retry': 120,
          'queue_limit': 50,
          'bulk': 10,
          'orm': 'default',
          'schema': 'public'  # 指定使用public schema
      }
      
    • 直接启动集群时指定schema:
      python manage.py qcluster --schema public
      

内容的提问来源于stack exchange,提问作者Valeriu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:13:08