2017-11-08 2 views
1

私はdjangoアプリケーションから新しいプロセスを作成します。このプロセスからデータベースに新しいレコードを作成できますか? 私のコードは、例外がスローされます:Djangoは別のプロセスからデータベースにアクセスします

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 

UPD_1

def post(self, request): 
     v = Value('b', True) 
     proc = Process(target=start, args=(v, request.user, 
     request.data['stock'], request.data['pair'], '1111')) 

     proc.start() 

    def start(v, user, stock_exchange, pair, msg): 
     MyModel.objects.create(user=user, stock_exchange=stock_exchange, pair=pair, date=datetime.now(), message=msg) 
+0

これを正しく初期化したら、はいと思っています。通常は 'manage.py'はすべてのスタートアップを行いますが、ここでは手動で行う必要があります。 –

+0

コードを表示できますか? – LW001

答えて

1

あなたが最初のプロジェクトを初期化する必要があります。 manage.pyを実行するときには通常自動的に行う必要はありませんが、新しいプロセスではこれが行われません。あなたが最初sys.pathに追加する必要があるかもしれませんではないので、もし、このコードが実行されているwhereeverからインポート出来る

import django 
import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 
django.setup() 

myproject.settingsニーズ:だからあなたはあなたのコードの先頭に次のようなものを配置する必要があります。

これが完了したら、通常どおりプロジェクトのモデルにアクセスし、データベースにアクセスすることができます。

+0

私の見解から新しいprocを開始しました。 proc funcの先頭にコードを追加した後に何も起こらない –

関連する問題