那么一点点背景知识。我试图让我的任务在应交付订单的同时运行。假设订单是下周,我希望任务在交货日期前两天(48小时)运行。除非订单在48小时内到期。我试图弄清楚这是否是写的好方法。
我首先创建交货日期的eta
:
eta = timezone.make_aware(
datetime.datetime.combine(
buyer_invoice.purchase_order.deliver_date,time(hour=22)
),
timezone.get_current_timezone()
)
eta = eta + timedelta(days=1)`
为下订单创建协调时间。
reconcile_time = timezone.make_aware(
datetime.datetime.combine(
buyer_invoice.purchase_order.delivery_date,
time(hour=RECONCILE_AT_HRS)
),
timezone.get_current_timezone()
)
并设置一个现在点。
now = timezone.now()
要弥补过去的任何订单,
if now > reconcile_time:
reconcile_time = now + timedelta(minutes=5)
if now > eta:
eta= now + timedelta(minutes= 5)
这是我到目前为止的工作。现在,我已经添加了下一部分,以根据需要进行调整。
if eta < timedelta(hours = 48)
do_reconcile = reconcile_time
else:
do_reconcile = eta - timedelta(days = 2)
完成我的任务
task_id_reconcile= uuid()
buyer_invoice.auto_reconcile_task = auto_reconcilation.apply_async(
args=[buyer_invoice, task_id_reconcile],
eta=do_reconcile + timedelta(minutes=1),
task_id=task_id_reconcile
)
task_id_inv_reconcile = uuid()
buyer_invoice.inventory_reconcile_task = inventory_reconcile.apply_async(
args=[buyer_invoice, task_id_inv_reconcile],
eta=do_reconcile,
task_id=task_id_inv_reconcile
)
由于这是我正在做的一项非常敏感的任务,所以我希望我能写一些见解。任何有益的意见将不胜感激。
编辑:我正在尝试在Shell中对此进行测试,但我不断得到:
django.core.exceptions.ImproperlyConfigured:请求设置CACHES,但未配置设置。在访问设置之前,您必须定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure()。
所以我也在努力弄清楚。