web-dev-qa-db-ja.com

Djangoでバックグラウンドタスクを起動する簡単な方法

私はDjango Webサイトを持っています。1つのページにはボタン(またはリンク)があり、クリックするとやや長い実行中のタスクが起動します。明らかに、このタスクをバックグラウンドタスクとして起動し、すぐに戻りたいです。ユーザーへの結果です。たとえば、Celeryのようなまったく新しいメッセージングアーキテクチャをインストールして学習する必要がない単純なアプローチを使用してこれを実装したいのですが、Celeryを使用したくない!単純なアプローチを使用したいだけです。次の30分ほどで設定して実行できるようになります。Django)でこれを行う簡単な方法はありませんか?

31
Marc

サードパーティのライブラリをインストールするつもりでも、Celeryよりもずっとシンプルなものが必要な場合は、Redis Queueをチェックしてください。それ自体はかなり簡単なRedisを必要としますが、他の多くの利点も提供できます。

RQ自体の構成はほとんどありません。驚くほど簡単です。

参照:

2
John Lehmann

スレッドを使用するだけです。

import threading

t = threading.Thread(target=long_process,
                            args=args,
                            kwargs=kwargs)
t.setDaemon(True)
t.start()
return HttpResponse()

詳細については、この質問を参照してください: Can Djangoマルチスレッドは機能しますか?

17
Benjamin Toueg

Django-background-tasks をご覧ください。RabbitMQやRedisのように実行するために追加のサービスを必要とせず、必要な機能をすべて備えています。データベース内のタスクキューを管理し、1回またはcronジョブとして実行できるDjango管理コマンドがあります。

13
user226114