0

我对 Redis 排队作业任务很陌生。我尝试使用 Redis To Go Add-on 在队列上执行一些功能。但是在我将一些任务推入队列后,它似乎消失了。

这是我的代码

import Flask
import redis
from rq import Queue

REDIS_URL = os.getenv('REDISTOGO_URL', None)
if REDIS_URL!=None:
    r = redis.from_url(REDIS_URL)
else:
    r = redis.Redis()

q = Queue(connection=r)

def function(pam1):
    print("Checkpoint1")
    return 0

@main.route('/name', methods=['GET', 'POST'])
def displayname():
    job = q.enqueue(function, pam1=0)
    return job.id

有关队列的附加信息:仍然提供作业 ID,例如 7344337b-cca0-442a-b43a-abcdc88f012c。

但heroku日志上根本没有“Checkpoint1”的迹象。

4

2 回答 2

1

我不确定 Heroku 的日志记录实现,但假设你正在查看错误的日志(或其他东西),你可以试试这个......

而不是打印“检查点”,而是增加自定义 redis 键的值:

def function(pam1):
    r.incr('job_ran', 1)
    return 0

然后创建一个可以检查此值的路由:

@app.route('/show_count')
def show_count():
    n = r.get('job_ran')

    if n is None:
        n = 0
    else:
        n = n.decode('utf-8')

    return f'Job has run {n} times'

现在将一些作业排入队列,并检查/show_count路线以确保它已相应增加。

于 2020-03-28T17:02:40.670 回答
0

感谢@v25。Redis 没有响应的真正原因是因为我没有 WORKER。上完之后,请参阅 Heroku guide on launch a worker现在我的问题解决了。

于 2020-03-30T13:15:15.923 回答