【问题标题】:How can I schedule a task in my django amazon product tracking project?如何在我的 django amazon 产品跟踪项目中安排任务?
【发布时间】:2021-07-26 14:21:12
【问题描述】:

我正在使用 Django 开发一个 web-app 项目。它是一个亚马逊产品价格跟踪器。我希望应用自动抓取产品表中的产品,以检查产品价格是否降低。我想在应用程序完成后部署它,所以它也应该在那里工作。

我在网上寻找答案,但似乎 cronjobscelery 不适用于 Windows,所以有没有其他方法可以实现我的目标。

我创建了一个需要每天执行一次的函数。

这是我想每 24 小时执行一次的函数。

def track():
    products = Product.objects.all()

    for product in products:
        new_data = getproduct(product.link)
        update_data(product, new_data)

我已经尝试过调度库:

import schedule
import time
from .models import Product
from .utils import getproduct

schedule.every().day.at("12:00").do(track)
  • 这里 getproduct 是抓取产品数据的方法,product 是模型

【问题讨论】:

    标签: python django scheduled-tasks


    【解决方案1】:

    在您的场景中,celery 是最佳选择,是的,您也可以在 Windows 上运行 celery。安装 rabbit mq 和 celery dajngo-background-tasks。

    【讨论】:

    • 感谢您告诉我有关 django-background-tasks 的信息。只有一件事我没有明白如何在不手动执行代码的情况下运行任务功能,即 python manage.py process_tasks 这是我必须用来运行任务的命令,但我希望任务只自动运行第一次将产品插入数据库时​​。有什么办法解决吗?
    • 就像 python manage.py runserver 你必须让 process_tasks 在一个单独的进程(终端)中运行。它会运行你的任务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2021-01-06
    • 1970-01-01
    • 2012-03-07
    • 2011-07-24
    • 2020-11-06
    • 2012-07-26
    相关资源
    最近更新 更多