概要
djangoでスクリプトをAPIから起動するにあたり、
manage.pyを使っていいのか(また使えるのか)について悩んでいます。
背景
Django REST framework(3系)にて、システムを作成しています。
APIの一つに「ユーザがPOSTしたデータを加工して保存する」という機能を実装する必要があります。
仕様はざっくり
- ファイル名、アップロード者などの情報をDBに保存
- 変換前データ、変換結果データを所定のクラウドストレージに保存
という二点です。
実装したところ物によってはワーカーがタイムアウトしてしまうほど加工に時間がかかっており(データ加工はライブラリ使用)、またファイルの内容はエンドユーザ(利用者)の都合が絡むため不明で、「様子見」という名目でファイルサイズに現状制限が無いため、ブラウザのタイムアウトに引っかかる可能性もある状況です。
対策としてDBに「変換ステータス」を持たせ、APIではデータ変換用のスクリプトをキックするだけにして「正常にキックできました」という応答に変更しようと思っています。
データ加工スクリプトはDB(できればDjangoのmodel)にアクセスする必要があるため、プロジェクト直下に「scripts」ディレクトリを作成し、スクリプトを格納しました。
manage.py runscriptで正常にデータ加工できるところまでは確認できています。
質問
ここまでの前提で、「APIからどうやってスクリプトを起動するか」の作法について悩んでいます。
manage.pyはその名の通り管理用のスクリプトである気がしているのですが、検索した限りお手軽にバックグラウンドでスクリプトを実行できる仕組みが見つかっていません。
このような要件において、「Djangoならこう」的な手法はあるのでしょうか。
ご教示のほど、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 11:01
2021/03/25 11:54