2014-10-23 3 views
0

나는 django에서 작업 중이며 기본 URL의 링크에서 전자 메일을 찾는 전자 메일 크롤러를 빌드했습니다 ... 나는 db.sqlite3 파일에 결과를 입력하고 싶습니다. 사이트 데이터베이스 내 크롤러는 backround에서 셀러리 작업으로 작동합니다. 작업을 끝까지 데이터베이스에 추가 할 수있는 방법은 무엇입니까? 나는 post 메소드를 사용하려고하는데 행운이 없다.Django 게시 작업 결과

는 tasks.py

from celery.utils.log import get_task_logger 
from .forms import CrawlUpForm 
from .craw import crawler 
import time 
app = Celery(broker='amqp://') 
@app.task 
def startcraw(base,url,emails): 
mylist= crawler(base,url,emails) 
for em in mylist: 
    new_entry = Crawler(site=base, max_links=20, max_emails=333,emails=em) 
    new_entry.save() 
answer= ', '.join(mylist) 
return answer 

내가 SQL 데이터베이스에 대한 답변을 추가 할

은 (는 이메일, 링크 및 기타 물건을 포함)

내 views.py :

from tasks import startcraw 
import time 
def home(request): 
    form = SignUpForm(request.POST or None) 
    if form.is_valid(): 
    save_it= form.save(commit=False) 
    save_it.save() 
    messages.success(request,"Working, please wait........") 
    baseurl=form.cleaned_data['site'] 
    maxemails=form.cleaned_data['max_emails'] 
    maxurl=form.cleaned_data['max_links'] 
    startcraw.delay(base=baseurl,url=maxurl,emails=maxemails) 
    return HttpResponseRedirect('/done/') 
return render_to_response("signup.html",locals(),context_instance=RequestContext(request)) 

models.py :

class Crawler(models.Model): 
site=models.CharField(max_length=250,null=True,blank=False) 
max_links=models.IntegerField(default=5,max_length=10,blank=True) 
max_emails=models.IntegerField(default=5,max_length=10,blank=True) 
emails = models.CharField(max_length=999999,null=True,blank=False) 

models.py를 추가합니다. 내 tasks.py 내 이메일 목록 mylist var에 수신 다른 변수에 대해 신경 쓰지 마십시오 ...

답변

0

왜 게시 하시겠습니까? Celery 스크립트에서 직접 모델에 액세스 할 수 있습니다.

+0

직접 추가하는 방법을 알지 못했습니다 ... 약간의 예를 들어 주시겠습니까? –

+0

코드에서 모델 인스턴스를 만드는 방법을 알고 있습니까? 그렇지 않다면 Django 튜토리얼을 실행해야한다. –

+0

나는 거기에서 이해하려고 노력했다. 그러나 나는 do not가 일하는 것을 tring하고있다. –