gpt4 book ai didi

python - 如何在后台任务中访问redis连接

转载 作者:可可西里 更新时间:2023-11-01 11:12:52 26 4
gpt4 key购买 nike

enter image description here

我正在尝试扩展 flask-base 项目 https://github.com/hack4impact/flask-base/tree/master/app仅随用户模型一起提供。我正在尝试添加使用 rq 在 redis 上运行后台任务的能力。我找到了 https://devcenter.heroku.com/articles/python-rq这很有帮助。

此应用支持 redis 队列,后台 redis 队列通过运行实现:

@manager.command
def run_worker():
"""Initializes a slim rq task queue."""
listen = ['default']
conn = Redis(
host=app.config['RQ_DEFAULT_HOST'],
port=app.config['RQ_DEFAULT_PORT'],
db=0,
password=app.config['RQ_DEFAULT_PASSWORD'])

with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()

使用:

$ python manage.py run_worker

在我看来我有:

@main.route('/selected')
def background_selected():
from rq import Queue
from manage import run_worker.conn
q = Queue(connection=conn)
return q.enqueue(selected)

问题是我不知道如何将在 run_worker() 中创建的连接导入到我的 View 中。我尝试过以下变体:

from manage import run_worker.conn

但我得到:

SyntaxError:语法无效。

如何在后台任务中访问 c​​onn 变量?

最佳答案

来自文档,python-rq Configuration

您可以尝试进行以下更改吗:

ma​​nager.py

import redis

"""Initializes a slim rq task queue."""
listen = ['default']
conn = redis.Redis(host=app.config['RQ_DEFAULT_HOST'],
port=app.config['RQ_DEFAULT_PORT'],
db=0,
password=app.config['RQ_DEFAULT_PASSWORD'])

@manager.command
def run_worker():
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()

从 View 中看:

from rq import Queue
from manage import conn

q = Queue(connection=conn)

关于python - 如何在后台任务中访问redis连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48750515/

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