【发布时间】:2014-12-19 02:25:23
【问题描述】:
我正在开发 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 中收到电子邮件列表 现在不关心其他变量...
【问题讨论】:
标签: django database sqlite task celery