カテゴリ: Flask 更新日: 2026/01/08

Flask×Redisでタスク結果を保存・参照する仕組みを完全解説|初心者向け非同期処理とタスク管理

Flask×Redisでタスク結果を保存・参照する仕組みを解説
Flask×Redisでタスク結果を保存・参照する仕組みを解説

先生と生徒の会話形式で理解しよう

生徒

「Flaskで非同期処理を動かしたあと、その結果を後から確認することってできますか?」

先生

「できますよ。Redisを使うと、タスクの結果を保存して、あとから参照できるようになります。」

生徒

「Redisってデータベースみたいなものですか? パソコンもあまり触ったことがなくて……。」

先生

「難しく考えなくて大丈夫です。今回は“結果を書いたメモを置いておく箱”だと思って説明します。」

1. Flaskの非同期処理で結果管理が必要な理由

1. Flaskの非同期処理で結果管理が必要な理由
1. Flaskの非同期処理で結果管理が必要な理由

Flask(フラスク)は、Pythonで作られたシンプルなWebアプリケーションの仕組みです。 通常は、ボタンを押すとすぐ結果が画面に表示されます。

しかし、非同期処理を使うと、処理は裏で動きます。 そのため、すぐには結果が分かりません。

これは、クリーニング屋さんに服を預けて、 その場では受け取らず、後日取りに行くのと同じです。 「今どうなっているか」「終わったか」を知るには、 結果をどこかに保存しておく必要があります。

そこで活躍するのが、Flask×Redisによるタスク結果管理です。

2. Redisとは何か?初心者向けに解説

2. Redisとは何か?初心者向けに解説
2. Redisとは何か?初心者向けに解説

Redis(レディス)は、とても高速にデータを保存できる仕組みです。 専門用語では「インメモリデータストア」と呼ばれます。

難しく聞こえますが、 紙に書いたメモを机の上に置いておく イメージで問題ありません。

FlaskやCeleryが、 「このタスクの結果はこれです」とメモを書き、 あとで別の人がそれを読む、という使い方をします。

Flask Redis、Redis タスク結果 保存、非同期処理 結果 参照 といったキーワードで検索される理由がここにあります。

3. Redisにデータを保存する基本操作

3. 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に保存する

4. Celeryタスクの結果を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に保存された結果を参照する

5. FlaskからRedisに保存された結果を参照する
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. 全体の動きと役割分担

6. 全体の動きと役割分担
6. 全体の動きと役割分担

ここで、全体の流れを整理します。

  • ① Flaskがタスクを開始
  • ② Celeryが裏で処理を実行
  • ③ 結果をRedisに保存
  • ④ FlaskがRedisから結果を取得

Flaskは画面担当、 Celeryは作業担当、 Redisはメモ置き場です。

それぞれの役割を分けることで、 処理が分かりやすく、安定します。

7. Redisに結果を保存するメリット

7. Redisに結果を保存するメリット
7. Redisに結果を保存するメリット

Redisを使うことで、次のような利点があります。

  • 処理結果を後から確認できる
  • 画面が固まらない
  • データベースほど難しくない

初心者にとって、 「まずはRedisで結果管理」はとても理解しやすい方法です。

8. 初心者が混乱しやすいポイント

8. 初心者が混乱しやすいポイント
8. 初心者が混乱しやすいポイント

よくある勘違いは、 「Flaskを再起動したら結果が消えた」という点です。

Redisはメモ帳のような存在なので、 設定によっては電源を切ると消えることがあります。

また、非同期処理は 「すぐ結果が返らない」のが普通です。 結果はRedisに取りに行く、という考え方が大切です。

本文テキスト文字数:約2830文字(全角の平仮名・カタカナ・漢字のみ、コード除外)

カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリのセキュリティテストを効率的に行う方法まとめ
New2
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New3
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New4
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.5
Java&Spring記事人気No5
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.6
Java&Spring記事人気No6
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう