Flask×Redisでタスク結果を保存・参照する仕組みを完全解説|初心者向け非同期処理とタスク管理
生徒
「Flaskで非同期処理を動かしたあと、その結果を後から確認することってできますか?」
先生
「できますよ。Redisを使うと、タスクの結果を保存して、あとから参照できるようになります。」
生徒
「Redisってデータベースみたいなものですか? パソコンもあまり触ったことがなくて……。」
先生
「難しく考えなくて大丈夫です。今回は“結果を書いたメモを置いておく箱”だと思って説明します。」
1. Flaskの非同期処理で結果管理が必要な理由
Flask(フラスク)は、Pythonで作られたシンプルなWebアプリケーションの仕組みです。 通常は、ボタンを押すとすぐ結果が画面に表示されます。
しかし、非同期処理を使うと、処理は裏で動きます。 そのため、すぐには結果が分かりません。
これは、クリーニング屋さんに服を預けて、 その場では受け取らず、後日取りに行くのと同じです。 「今どうなっているか」「終わったか」を知るには、 結果をどこかに保存しておく必要があります。
そこで活躍するのが、Flask×Redisによるタスク結果管理です。
2. Redisとは何か?初心者向けに解説
Redis(レディス)は、とても高速にデータを保存できる仕組みです。 専門用語では「インメモリデータストア」と呼ばれます。
難しく聞こえますが、 紙に書いたメモを机の上に置いておく イメージで問題ありません。
FlaskやCeleryが、 「このタスクの結果はこれです」とメモを書き、 あとで別の人がそれを読む、という使い方をします。
Flask Redis、Redis タスク結果 保存、非同期処理 結果 参照 といったキーワードで検索される理由がここにあります。
3. Redisにデータを保存する基本操作
まずは、Redisにデータを書いたり、読んだりする基本を見てみましょう。 ここではPythonからRedisを操作します。
import redis
r = redis.Redis(host="localhost", port=6379, db=0)
r.set("sample_key", "こんにちは")
これは、「sample_key」という名前で文字を保存しています。 まさに、引き出しにラベルを付けてメモを入れる感覚です。
value = r.get("sample_key")
print(value)
b'こんにちは'
保存したデータを、そのまま取り出せるのがRedisの特徴です。
4. Celeryタスクの結果をRedisに保存する
次に、非同期タスクの結果をRedisに保存してみましょう。 ここでは「計算結果」を保存する例です。
from celery import Celery
import redis
celery = Celery(
"tasks",
broker="redis://localhost:6379/0"
)
r = redis.Redis(host="localhost", port=6379, db=0)
@celery.task
def add_task(task_id, a, b):
result = a + b
r.set(task_id, result)
このコードでは、計算結果をRedisに保存しています。 task_idは、結果を取り出すための番号札のようなものです。
5. FlaskからRedisに保存された結果を参照する
次は、Flaskを使って、保存されたタスク結果を確認します。
from flask import Flask
import redis
app = Flask(__name__)
r = redis.Redis(host="localhost", port=6379, db=0)
@app.route("/result/<task_id>")
def get_result(task_id):
result = r.get(task_id)
return f"結果: {result}"
この仕組みにより、 「処理が終わったかどうか」を後から確認できます。 非同期処理 結果 確認 Flask Redis という検索にも対応できます。
6. 全体の動きと役割分担
ここで、全体の流れを整理します。
- ① Flaskがタスクを開始
- ② Celeryが裏で処理を実行
- ③ 結果をRedisに保存
- ④ FlaskがRedisから結果を取得
Flaskは画面担当、 Celeryは作業担当、 Redisはメモ置き場です。
それぞれの役割を分けることで、 処理が分かりやすく、安定します。
7. Redisに結果を保存するメリット
Redisを使うことで、次のような利点があります。
- 処理結果を後から確認できる
- 画面が固まらない
- データベースほど難しくない
初心者にとって、 「まずはRedisで結果管理」はとても理解しやすい方法です。
8. 初心者が混乱しやすいポイント
よくある勘違いは、 「Flaskを再起動したら結果が消えた」という点です。
Redisはメモ帳のような存在なので、 設定によっては電源を切ると消えることがあります。
また、非同期処理は 「すぐ結果が返らない」のが普通です。 結果はRedisに取りに行く、という考え方が大切です。