【问题标题】:DoesNotExists Error with django and celerydjango 和 celery 的 DoesNotExists 错误
【发布时间】:2023-03-25 22:44:01
【问题描述】:

以下是一个基本的芹菜代码

 @app.task
 def t_select(booking_id, seat_id, user_id):
     with transaction.atomic():
         booking = Booking.objects.get(id=booking_id)
         booking.seats.add(Seat.objects.get(pk=seat_id))
         return booking.save()

这给出了以下错误:

[2018-04-01 02:25:55,893: INFO/MainProcess] Received task: functors.booker.t_select[cec7f2ca-bca0-4f3e-9865-102f3528ce3a]  
[2018-04-01 02:25:55,894: ERROR/ForkPoolWorker-4] Task functors.booker.t_select[e3a69d6b-1fc9-44cb-96ce-bfe18a1c96a9] raised unexpected: DoesNotExist('Booking matching query does not exist.',)
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 374, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 629, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/harshil/Courses/SE/movie_recommender/functors/booker.py", line 9, in t_select
    try:
  File "/usr/local/lib/python3.5/dist-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 403, in get
    self.model._meta.object_name
booking_system.models.DoesNotExist: Booking matching query does not exist.

在打印 Booking.object.all() 时,我得到 3 个对象,这就是我用来调用上述函数的对象。因此不应该有DoesNotExist 错误。谁能帮我解决问题?

编辑:仅在测试代码时发生

【问题讨论】:

  • 打印booking_id得到了什么
  • 如果我将 print(booking_id) 放入 t_select 函数中,则错误的行号保持不变并且不会打印该值。如果我在启动函数之前打印它,它会打印 1。我在调用它之前做了一个记录。
  • 显示你调用t_select函数的代码。
  • pastebin.com/Tuyv4snH。 booker.select 是 t_select 的代理
  • 你在哪里创建 Booking 在你的测试模块中的对象?

标签: django django-models celery


【解决方案1】:

您使用的是真正的芹菜工艺吗?或者您的 celery 设置是否设置为渴望(例如,与您的测试同步)?如果您使用的是真正的 celery 进程,那么很可能您的对象是在测试数据库中创建的,而 celery 的 django 实例正在尝试访问真正的数据库。

尝试将您的设置设置为渴望,看看它是否仍然起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2017-06-11
    • 2023-03-26
    • 2019-01-25
    • 2017-03-09
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多