URL

2013-01-15 2 views
1

을 통해 관리 명령을 실행 나는 (website.py)URL

from __future__ import absolute_import 
from django.core.management.base import BaseCommand 


class Command(BaseCommand): 

    def run_from_argv(self, argv): 
     self._argv = argv 
     self.execute() 

    def handle(self, *args, **options): 
     from scrapy.cmdline import execute 
     execute(self._argv[1:]) 

내가 URL을 통해이 명령을 실행하려면 다음과 같은 관리 명령을했다 : 뷰는/크롤/업데이트 - 지금/ :

from django.core import management 

def update_index(request): 
    management.call_command('website', 'crawl spider') 

그러나 그것은 작동하지 않습니다 :

Command' object has no attribute '_argv' 
+0

이것을 알아 냈습니까? 여기서 뭐 하자구? –

답변

1

나는 문제가 run_from_argv가 INT이라고 생각합니다 ernal Django 메서드를 호출하고 django.core.management.ManagementUtility에서 호출합니다. 그리고 당신 자신에 의해 그것을 구현해서는 안됩니다, self._argv는 어디에도 설정되어 있지 않습니다. 인수는 이미 handle()에서 사용할 수 있습니다.

귀하의 접근 방식에는 몇 가지 단점이 있습니다.

우선 장고의 동기 성 때문에 URL이 "무겁다"면 장고를 가져 와서 구문 분석하는 데 많은 시간이 걸릴 수 있습니다. 대신에 Celery을 살펴보실 것을 강력히 권합니다. 보기에서 작업을 실행하는 것이 "올바른"방법이며 성능에 문제가 없습니다.