カテゴリ: 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
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
New2
Python
Pythonで日付文字列から曜日を取得する方法を完全ガイド!初心者でもわかる日時処理入門
New3
Flask
FlaskアプリのSSL設定方法をやさしく解説!初心者でもわかるHTTPS対応の手順
New4
Python
Pythonでリストを辞書に変換する方法を完全ガイド!初心者でもわかるdict()とzip()の使い方
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説