0

我有当前路线

@app.route('/as/<keyword>', methods=['GET'])
@cache.memoize(timeout = 30 * 24 * 60 * 60)
def auto_suggest(keyword):
    job = q.enqueue(find_keyword, keyword, timeout = 60 * 60)
    while not job.result:
        time.sleep(1)
    return jsonify(word=job.result)

当我在本地运行它时,它工作正常,因为它不会超时。在结果保存到缓存中并在随后的重新加载时立即加载该函数后,它会立即加载。但是一旦我在运行路由时将它放在服务器上,它就会超时。

即使任务在超时后完成,当我重新加载函数时,它也会重新运行任务,而不是从缓存中调用它。

我应该这样做吗?

4

1 回答 1

0

我继续通过将 long 函数放在 redis 键中并从路由中调用该键来解决这个问题。

@app.route('/as/<keyword>', methods=['GET'])
def auto_suggest(keyword):
    if not redis.get(keyword):
        q.enqueue(find_keyword, keyword, timeout = 60 * 60)
        return jsonify(word=False)
    return jsonify(word=redis.get(keyword))
于 2015-12-25T07:19:10.713 回答