【问题标题】:Django post task result to formDjango 将任务结果发布到表单
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我无法理解如何直接添加它...你能举个小例子吗?
    • 你知道如何在你的代码中创建模型实例吗?如果没有,那么你应该学习 Django 教程,那里有完整的解释。
    • 我试图从那里理解,但我试图不工作
    • 你们都知道要上下投票,但不愿意提供一点帮助,我已经阅读了教程,我已经用 celery 等构建了一个项目,但我无法将数据添加到 db 文件
    • 好吧,在最近的统计中,我已经在 StackOverflow 上回答了近 6,000 个问题,所以如果我不认真对待这个指控,请原谅我。如果你不知道如何在 Django 中进行基础操作——并且在模型中保存数据是最基本的——你应该去重新学习该教程,并确保在尝试更复杂的东西(如 Celery)之前理解它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2018-09-20
    相关资源
    最近更新 更多