0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FlaskアプリでCeleryを使ってバックグラウンドタスクを実行する方法

Posted at

FlaskアプリでCeleryを使ってバックグラウンドタスクを実行する方法

環境設定

必要なツールとライブラリをインストールします。

  1. Redisのインストール
    macOSを使用している場合、Homebrewを通じてRedisを簡単にインストールできます。

    brew install redis
    

    インストール後、Redisサーバーを起動します。

    redis-server
    
  2. FlaskとCeleryのライブラリのインストール

    pip install Flask Celery redis
    

Flaskアプリの設定

Flaskアプリを設定し、Celeryのインスタンスを初期化します。

from flask import Flask
from celery import Celery

app = Flask(__name__)
app.config["broker_url"] = "redis://localhost:6379/0"
app.config["result_backend"] = "redis://localhost:6379/0"
app.config['broker_connection_retry_on_startup'] = True

celery = Celery(app.name, broker=app.config["broker_url"])
celery.conf.update(app.config)

タスクの定義

非同期タスクをCeleryで定義します。

@celery.task
def process_files(file_path_list):
    for path in file_path_list:
        print(f'Processing {path}')

タスクの実行

Flaskルートから非同期タスクを実行します。

@app.route('/start-task')
def start_task():
    process_files.delay(["path1", "path2", "path3"])
    return "Task started!", 202

Celeryワーカーの起動

ターミナルで以下のコマンドを実行して、Celeryワーカーを起動します。

celery -A your_flask_file_name.celery worker

この設定により、Flaskアプリケーションはバックグラウンドでタスクを実行し、非同期処理の完了を待たずに応答を返すことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?