如何为Django中的芹菜队列设置特定代理?

如何为Django中的芹菜队列设置特定代理?,django,redis,celery,amqp,Django,Redis,Celery,Amqp,我正在尝试将当前资源密集型视频处理队列移动到单独的代理。我已将默认代理url设置为使用AMQP: BROKER_URL = 'amqp://defaultaddress/' 我的新经纪人正在使用Redis: VIDEO_BROKER_URL = 'redis://videoaddress/' 如何设置“视频”队列以使用视频代理URL而不是默认代理URL 我已经通读了芹菜文档,但我没有看到任何关于更改代理的内容。首先,在django芹菜中,这似乎是不可能的,因为每个django实例项目只有一个芹菜

我正在尝试将当前资源密集型视频处理队列移动到单独的代理。我已将默认代理url设置为使用AMQP:

BROKER_URL = 'amqp://defaultaddress/' 我的新经纪人正在使用Redis:

VIDEO_BROKER_URL = 'redis://videoaddress/' 如何设置“视频”队列以使用视频代理URL而不是默认代理URL


我已经通读了芹菜文档,但我没有看到任何关于更改代理的内容。

首先,在django芹菜中,这似乎是不可能的,因为每个django实例项目只有一个芹菜应用实例。但目前django芹菜已被弃用,在芹菜和django集成的新概念中,您实际上可以解决您的问题,因此:

你必须创建两个不同的芹菜应用程序

普通/芹菜.py

通用/tasks.py

视频/芹菜.py

视频/任务.py

现在,您可以从django项目导入这两个应用程序。例如:

从video.tasks导入解码视频 从common.tasks导入添加 定义某些视图功能请求: x=添加。延迟2,2 解码视频。应用异步'/1/2/3/video.mp4','mp4','avi',倒计时=5 归还某物
希望它会有帮助。

首先,在django芹菜中似乎不可能,因为每个django实例项目只有一个芹菜应用程序实例。但目前django芹菜已被弃用,在芹菜和django集成的新概念中,您实际上可以解决您的问题,因此:

你必须创建两个不同的芹菜应用程序

普通/芹菜.py

通用/tasks.py

视频/芹菜.py

视频/任务.py

现在,您可以从django项目导入这两个应用程序。例如:

从video.tasks导入解码视频 从common.tasks导入添加 定义某些视图功能请求: x=添加。延迟2,2 解码视频。应用异步'/1/2/3/video.mp4','mp4','avi',倒计时=5 归还某物
希望能有所帮助。

因此,在进行了更多搜索之后,我发现:

from kombu import BrokerConnection ... video_connection = BrokerConnection(settings.VIDEO_BROKER_URL) process_video.apply_async(arg=[video_pk], connection=video_connection)
我的初始测试似乎正在运行,因为我的本地celeryd实例没有完成任务

在进行了更多的搜索之后,我发现:

from kombu import BrokerConnection ... video_connection = BrokerConnection(settings.VIDEO_BROKER_URL) process_video.apply_async(arg=[video_pk], connection=video_connection)
我的初始测试似乎正在运行,因为我的本地celeryd实例没有完成任务

这种方法当然是正确的,这就是为什么你会得到一个向上投票的原因,但我通常不鼓励使用不同的代理,因为代理是为了利用集中路由和队列管理的优势而设计的。我看不出使用2个代理的好处。如果您同意的话,您可以在您的答案中说明这一点,使其更加完整。这种方法肯定是正确的,这就是为什么您可以获得向上投票权的原因,但我通常不鼓励使用不同的代理,因为代理是为了利用集中路由和队列管理的优势。我看不出使用2个代理的好处。如果你同意的话,你可以在你的回答中陈述这一点,使之更加完整。
from __future__ import absolute_import
from celery import Celery

app = Celery('video',
             broker='redis://',
             include=['video.tasks'])

if __name__ == '__main__':
    app.start()
from __future__ import absolute_import
from video.celery import app


@app.task
def decode_video(path, from_format, to_format):
    # do something
from kombu import BrokerConnection ... video_connection = BrokerConnection(settings.VIDEO_BROKER_URL) process_video.apply_async(arg=[video_pk], connection=video_connection)