gpt4 book ai didi

django - django 应用程序中 redis-queue 队列的命名空间

转载 作者:可可西里 更新时间:2023-11-01 11:24:55 25 4
gpt4 key购买 nike

我有一个 django 应用程序,它使用 redis-queue 在后台管理长时间运行的任务。我已设置并运行它(如果采用愚蠢的配置),但我不清楚存储队列的适当命名空间是什么。

我按照文档中的建议设置了 rq worker:

#rqsetup.py
import os
import redis
from rq import Worker, Queue, Connection


listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
conn = redis.from_url(redis_url)

if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()

我可以将队列添加到我的 View 中:

# views.py
from rqsetup import conn
from rq import Queue
from somewhere import bgtask

def myview(request):
q = Queue(connection=conn)
job = q.enqueue(bgtask)
return render(request, 'somepage.html')

这显然是愚蠢的,因为在 View 返回后队列和作业都丢失了。重点是将队列放在某个命名空间中,以便我稍后可以再次访问它。

但是,我想不出其他地方可以放它。如果我在 rqsetup 中尝试,我只会遇到导入错误,或者在正确设置之前导入乱序。我真的不知道它应该去哪里。

否则我有一个正常结构化的应用程序:

myproject
-myproject
-__init__.py
-settings.py
-urls.py
-wsgi.py
-myapp
-apps.py
-somewhere.py
-views.py
-manage.py
-Procfile
-requirements.txt
-rqsetup.py

redis-queue队列应该存放在django项目的什么地方?

最佳答案

原来是 django_rq provides the queue namespace为你! settings.py 应该是这样的:

RQ_QUEUES = {
'default': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
'PASSWORD': 'some-password',
'DEFAULT_TIMEOUT': 360,
},
'high': {
'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'), # If you're on Heroku
'DEFAULT_TIMEOUT': 500,
},
'low': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
}
}

然后您只需从 django_rq 命名空间获取队列:queue = django_rq.get_queue('high')

关于django - django 应用程序中 redis-queue 队列的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48307403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com