私はDjango Webサイトを持っています。1つのページにはボタン(またはリンク)があり、クリックするとやや長い実行中のタスクが起動します。明らかに、このタスクをバックグラウンドタスクとして起動し、すぐに戻りたいです。ユーザーへの結果です。たとえば、Celeryのようなまったく新しいメッセージングアーキテクチャをインストールして学習する必要がない単純なアプローチを使用してこれを実装したいのですが、Celeryを使用したくない!単純なアプローチを使用したいだけです。次の30分ほどで設定して実行できるようになります。Django)でこれを行う簡単な方法はありませんか?
サードパーティのライブラリをインストールするつもりでも、Celeryよりもずっとシンプルなものが必要な場合は、Redis Queueをチェックしてください。それ自体はかなり簡単なRedisを必要としますが、他の多くの利点も提供できます。
RQ自体の構成はほとんどありません。驚くほど簡単です。
参照:
スレッドを使用するだけです。
import threading
t = threading.Thread(target=long_process,
args=args,
kwargs=kwargs)
t.setDaemon(True)
t.start()
return HttpResponse()
詳細については、この質問を参照してください: Can Djangoマルチスレッドは機能しますか?
Django-background-tasks をご覧ください。RabbitMQやRedisのように実行するために追加のサービスを必要とせず、必要な機能をすべて備えています。データベース内のタスクキューを管理し、1回またはcronジョブとして実行できるDjango管理コマンドがあります。