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

FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説

FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法

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

生徒

「Flaskでアプリを作ったら、ボタンを押したあと画面が固まってしまいました。これって普通なんですか?」

先生

「Flaskで長い処理をそのまま実行すると、待ち時間が発生します。そこでRQという仕組みを使う方法があります。」

生徒

「RQってなんですか? パソコンも最近触り始めたばかりで……。」

先生

「大丈夫です。Redis Queueを使った非同期タスク管理を、たとえ話を交えて説明します。」

1. Flaskと非同期タスク管理が必要な理由

1. Flaskと非同期タスク管理が必要な理由
1. Flaskと非同期タスク管理が必要な理由

FlaskはPythonで作られた、とても軽くて使いやすいWebフレームワークです。 しかし、時間のかかる処理をFlaskの中で直接動かすと、画面が止まったように見えてしまいます。

これは、電話対応中に別の仕事を同時に頼まれるような状態です。 一つずつしか対応できないため、待たせてしまいます。

Flask 非同期処理、長時間処理、タスク管理という言葉は、 この問題を解決するためによく検索されています。

2. RQ(Redis Queue)とは何か

2. RQ(Redis Queue)とは何か
2. RQ(Redis Queue)とは何か

RQとは、Redis Queueの略で、Redisという仕組みを使った「順番待ちの箱」です。 Redis(レディス)は、データを一時的に覚えておく高速なメモ帳のような存在です。

RQを使うと、「この作業を後でやってください」というお願いを箱に入れられます。 Flaskはお願いだけして、すぐに返事ができます。

これがFlask RQ 非同期タスク管理の基本的な考え方です。

3. まずは長時間処理の例を見てみる

3. まずは長時間処理の例を見てみる
3. まずは長時間処理の例を見てみる

次の例は、時間がかかる処理をFlaskで直接行っている例です。


from flask import Flask
import time

app = Flask(__name__)

@app.route("/slow")
def slow():
    time.sleep(5)
    return "処理が終わりました"

このAPIを呼ぶと、5秒間なにも返ってきません。 初心者の方は「壊れた」と感じやすい状態です。

4. RQで実行するタスクを作る

4. RQで実行するタスクを作る
4. RQで実行するタスクを作る

次に、時間のかかる処理をRQのタスクとして分けます。 タスクとは「後で実行する仕事」です。


import time

def long_task():
    time.sleep(5)
    return "裏で処理が完了しました"

この関数は、Flaskの外で実行される仕事になります。

5. FlaskからRQにタスクを登録する

5. FlaskからRQにタスクを登録する
5. FlaskからRQにタスクを登録する

Flask側では、RQに対して「この仕事をお願いします」と登録するだけです。


from flask import Flask
from redis import Redis
from rq import Queue
from tasks import long_task

app = Flask(__name__)
redis = Redis()
queue = Queue(connection=redis)

@app.route("/start")
def start():
    queue.enqueue(long_task)
    return "処理を受け付けました"

これでAPIはすぐに返事を返します。 処理はRQが順番に実行します。

6. ワーカーという実行担当者の役割

6. ワーカーという実行担当者の役割
6. ワーカーという実行担当者の役割

RQでは、ワーカーと呼ばれる担当者がタスクを実行します。 ワーカーは「箱の中身を確認して仕事をする人」です。


rq worker

このコマンドを実行すると、RQに入ったタスクが順番に処理されます。 Flaskとは別に動くのがポイントです。

7. RQを使うメリットと初心者向けの考え方

7. RQを使うメリットと初心者向けの考え方
7. RQを使うメリットと初心者向けの考え方

RQを使うことで、Flaskの画面が固まらなくなります。 ユーザーはすぐに操作を続けられます。

難しく感じるかもしれませんが、 「受付係」と「作業係」を分けるだけの仕組みです。

Flask RQ 使い方、Redis Queue 非同期処理、Python タスク管理 といったキーワードで、多くの人がこの方法を探しています。

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

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

初心者の方は、「結果をすぐ返さないといけない」と思いがちです。 しかし、まずは「受け付けた」という返事で十分です。

RQを使った非同期タスク管理は、 Flaskで安定したアプリを作るための基本的な設計です。

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

カテゴリの一覧へ
新着記事
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で仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう