カテゴリ: 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でリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説