2017-11-08 8 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를 통해이 작업을 수행 할 필요는 없지만 새 프로세스에서는이 작업을 수행하지 않습니다. 그래서 당신은 코드의 상단에 다음과 같은 것을 넣어해야합니다

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

myproject.settings이 먼저 sys.path에 추가해야 할 수도없는, 그래서 만약이 코드가 실행되는 whereever에서 수입 할 필요가있다.

이 작업을 완료하면 평소처럼 프로젝트 모델에 액세스하여 데이터베이스에 액세스 할 수 있습니다.

+0

제 견해에서 새로운 proc을 시작합니다. proc func의 맨 위에 코드를 추가 한 후에 아무 일도 일어나지 않습니다. –