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