【问题标题】:Django model not being created in celery task没有在 celery 任务中创建 Django 模型
【发布时间】:2016-05-23 00:23:45
【问题描述】:

我有一个周期性的 celery 任务,它没有创建我的模型

@periodic_task(run_every=timedelta(seconds=1))
def store_products():
    products = get_products()
    for product in products:
        Product.objects.create(
            name=product['name'],
            description=product['body_html'],
            vendor=product['vendor'],
            rank=product['rank'],
            source=product['source'],
            price=product['variants'][0]['price'],
             product_id=product['id'],
        )

我的问题是我做错了什么

【问题讨论】:

  • 您确定您的 celery worker 设置指向同一个数据库吗?你怎么知道这些对象没有被创建?你有错误吗?
  • 我检查了 django 管理员并查询了我的数据库。
  • 我认为这是一个与交易相关的问题。我的斗争是如何解决它

标签: django python-3.x rabbitmq celery djcelery


【解决方案1】:

由于声誉低,我无法发表评论。但这可能会有所帮助 - 由于这是一个周期性任务“transaction.atomic”或具有“ISOLATION_LEVEL_SERIALIZABLE”只会在您通过 celery 在多个子进程中创建对象时产生问题。

从提供的信息中不能得出太多结论,但问题似乎在

products = get_products()

如果您从模型中获取一些数据而不使用其中的主键,则会产生问题。

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 2018-08-13
    • 2019-12-15
    • 2019-02-16
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2021-12-12
    相关资源
    最近更新 更多