gpt4 book ai didi

Python:如何通过RQ获取工作结果

转载 作者:行者123 更新时间:2023-11-28 21:55:21 29 4
gpt4 key购买 nike

我有这样的代码:

from rq import Queue, use_connection
from task import add
from redis import Redis
import time
import logging

# use redis by default
# create work queue
redis_conn = Redis()
q = Queue(connection=redis_conn)

#notice: cann't run a task function in __main__ module
#because rq save module and function name in redis
#when rqworker running, __main__ is another module
# enqueue tasks,function enqueue returns the job instance
job = q.enqueue(add, 3, 9)
job = q.enqueue(add, 4, 9)
job = q.enqueue(add, 5, 9)
job = q.enqueue(add, 6, 9)

time.sleep(3)
#get the job result by job.result
logging.warn("result is %s", job.result)

当我运行应用程序时,我得到如下输出:

WARNING:root:result is 15


如何获取之前的结果??

最佳答案

我只是想出解决方案。

def recommend(request):
user_id = int(request.GET.get('user_id','287'))
job = django_rq.enqueue(recommended,user_id) # Enqueue Job
logger.debug(job.key)
response_data = {'status':'processing', 'job': job.key}
return HttpResponse(json.dumps(response_data), content_type="application/json")

def get_result(request):
job_id = request.GET.get('job_id')
redis_conn = django_rq.get_connection()
job_id=job_id.split(':')[2]
logger.info(job_id)
job = Job.fetch(job_id,redis_conn) #fetch Job from redis
if job.is_finished:
ret = job.return_value
elif job.is_queued:
ret = {'status':'in-queue'}
elif job.is_started:
ret = {'status':'waiting'}
elif job.is_failed:
ret = {'status': 'failed'}
return HttpResponse(json.dumps(ret), content_type="application/json")

这是我使用 django_rq 库的 Django 项目的一些代码。只要记住 Job.key 看起来像这样的“job:id:job_key”。拆分为 : 并得到第二个元素

关于Python:如何通过RQ获取工作结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22776924/

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