2016-08-31 4 views
0

私はCeleryを使用する小さな独立したPythonアプリケーションを開発しています。私はdjangoフレームワークを使ってこれを構築しましたが、私のアプリケーションはバックエンドだけです。つまり、ユーザーは自分のサイトにアクセスする必要はなく、アプリケーションはセロリからタスクキューを受け取り、データベースで操作を実行する目的でのみ構築されています。データベース上で操作を実行するには、Djangoモジュールを使用する必要があります。私のプロジェクトでのみDjangoモデルモジュールを使用できますか?

私がやっているのは、残りの私のdjangoアプリケーションを削除し、セロリとdjangoモデルのモジュールのみを使用することです(これを実行するために必要な依存関係を含む)。

要するに、私の単純なセロリアプリケーションは、私のredisブローカからの指示を受けて実行され、djangoモデルを使用してデータベース内で操作を実行します。

これは可能ですか?もしそうなら、どうですか?ここで

は私のプロジェクト構造である:ここで

myproject/ 
--manage.py 
--myproject/ 
----celery.py 
----models.py 
----settings.py 
----tasks.py 
----urls.py 
----wsgi.py 

は私のsettings.pyです:

答えて

0

あなただけの設定であなたのセットアップデータベースとINSTALLED_APPSものと仮定すると(

env['DJANGO_SETTING_MODULE'] = 'myproject.settings' 
django.setup() 

を必要としています。 py)

+0

もう少し説明してください、私は分かりません。これはどこで使う必要がありますか? – Elisha512

0

プロジェクトのsettings.pyで、これを最初に追加してください。

import django 
import os 

sys.path.insert(0, your_project_path) # Ensure python can find your project 
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
django.setup() 

次に、django ormを使用して、django設定で不要なミドルウェアを削除してください。

0

セロリタスクが必要なPythonスクリプトがあり、データベースのやり取りにDjango ORMが必要です。

  1. あなたが

  2. があなたの目的のためのアプリケーションを作成するDjangoプロジェクトは、models.pyにsettings.pyで、アプリ内で含まセットアップが必要なモデルを作成することができます。 ref:What minimal files i need to use django ORM

  3. セロリを実行する環境を設定します。つまり、サーバーを再起動します。 "djcelery"をdjangoプロジェクトと統合する。セロリの目的のために。 定期的な作業にセロリのビートを使用できます。または遅延する。 ref:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

  4. 通常のセロリタスクのようなdjangoモデルをインポートして使用することができます。あなたは私が

    を使用して実行することができます

  5. 、セロリの作業。セロリ - タスクワーカー--loglevel = info

    ii。セロリ - タスクビート-l情報。定期的な実行のために書かれたタスクが必要な場合は、ビートを使用してください。

  6. タスクをただちにまたは時間間隔の後に非同期に実行する必要がある場合は、task_nameを使用できます。delay() delay()を使用してPythonスクリプト内のタスクを呼び出す スクリプト内でdjceleryを使用すると、スクリプト内でdjango envを設定する必要があるかもしれません。 django.setup()を実行してください。

これはあなたの問題を解決するのに役立つと思います。

関連する問題