Тайм-аут маршрута, так что запоминать не работает
У меня есть текущий маршрут
@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))