カテゴリ: 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
Python
Pythonの集合型(set)とは?重複しないデータ管理の基本と活用方法
New2
Flask
Flaskアプリのセキュリティ脆弱性と解決方法を初心者向けに徹底解説!
New3
Python
Pythonのリストのメモリ効率を改善する方法を完全ガイド!初心者でもわかるgeneratorの使い方
New4
Python
PythonでSQLのトリガー・ストアドプロシージャを活用する基本を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.2
Java&Spring記事人気No2
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.3
Java&Spring記事人気No3
Flask
FlaskのBlueprintとは?機能ごとに分割して管理する基本設計を学ぼう
No.4
Java&Spring記事人気No4
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Flask
Flaskアプリのテスト性を高める設計方法まとめ
No.7
Java&Spring記事人気No7
Django
Django settings.py の役割とよく使う設定を完全解説!初心者でもわかる基本と考え方
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説