Django将任务结果发布到表单



我正在开发django,我已经构建了一个电子邮件爬网程序,它可以在基本url的链接上查找电子邮件。。。我想将结果输入到作为站点数据库的db.sqlite3文件中。我的爬行器在后台执行芹菜任务。我有什么方法可以让任务在最后将其添加到数据库中。我正试着用post方法来做,但没有成功。

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数据库中(它包含电子邮件、链接和其他东西)

我的观点.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中收到一份电子邮件列表现在不要关心其他变量。。。

为什么要发布它?您可以从Celery脚本直接访问模型,只需在那里创建即可。

相关内容

  • 没有找到相关文章

最新更新