Тайм-аут маршрута, так что запоминать не работает

У меня есть текущий маршрут

@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)

Когда я запускаю это на локальном компьютере, он работает нормально, так как он не истекает. После запуска функции один раз результат сохраняется в кеше и при последующих перезагрузках загружается мгновенно. но когда я запускаю маршрут на сервере, время ожидания истекает.

несмотря на то, что задача завершается после истечения времени ожидания, когда я перезагружаю функцию, она перезапускает задачу, а не вызывает ее из кэша.

Есть ли другой способ, которым я должен делать это?

1 ответ

Я пошел дальше и решил это, поместив длинную функцию в ключ 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))
Другие вопросы по тегам