5 关于自定义Celery和dvadmin的Celery开发 悬赏已过期

发布于 2023-04-18 00:54:42

问题如下:我自己开发了Django项目,并且Django项目中有多个app,我把他们集合到了apps,然后在项目文件(等同于dvadmin中的"application文件夹及其下属文件"),在该项目中,我创建了celery.py,并写入如下代码:

import os
from celery import platforms
from celery import Celery
from django.conf import settings

if 'DEBUG' in os.environ and os.environ['DEBUG'] == 'false':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Infinity.settings_docker')
else:
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Infinity.settings_prod')


app = Celery('Infinity')
app.config_from_object(settings, namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

# 同时,我在同级目录下的__init__.py写入以下代码,由此希望将项目中的Celery实例导入到整个项目中的其他模块中,以便于使用Celery进行后台任务的处理:

from .celery import app as celery_app

__all__ = ('celery_app',)

当时我希望前端可直接套用"Simpleui",就可以快速实现前端展示,它只需要将"simpleui"和"import_export"注册到app即可,然而simpleui的功能并不完全适合我,我于是转战到dvadmin,当我阅读文件"application/celery"时发现,dvadmin似乎有着自己的celery,现在我希望能够同时运行自己的celery实例,同时运行dvadmin的celery实例,我该如何修改代码,求大神解答。。。

查看更多

关注者
0
被浏览
791
2 个回答
hongzai
hongzai 认证专家 2023-04-18
life is coding,外包,远程协助,咨询添加:H0nGzA1

两个celery app实例,单独配置一下用的配置文件就好了,然后发现task的App配置一下

baige
baige 2023-04-18
这家伙很懒,什么也没写!

我修改了代码如下:

# application/__init__.py

from .celery import app_infinity, app as celery_app

__all__ = ('celery_app',)

# application/celery.py

import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings')

from django.conf import settings
from celery import platforms
from celery import Celery

if "django_tenants" in settings.INSTALLED_APPS:
    from tenant_schemas_celery.app import CeleryApp as TenantAwareCeleryApp
    app_infinity = Celery('Infinity')
    app = TenantAwareCeleryApp()
else:
    from celery import Celery

    app = Celery(f"application")
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
platforms.C_FORCE_ROOT = True

这样修改可以同时启用两个celery吗,求教@hongzai

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览