Так что немного фона.Я пытаюсь выполнить свою задачу одновременно с доставкой заказа.Скажем, заказ на следующей неделе, я хочу, чтобы задание выполнялось за два дня (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
)
Поскольку это такая деликатная задача для того, что я делаю,Я надеюсь, что есть некоторое понимание того, что я написал.Буду очень признателен за любую полезную информацию.
РЕДАКТИРОВАТЬ: Я пытаюсь проверить это в своей оболочке, но я продолжаю получать:
django.core.exceptions.ImproperlyConfigured: запрошенный параметр CACHES, но параметры не настроены.Вы должны либо определить переменную окружения DJANGO_SETTINGS_MODULE, либо вызвать settings.configure (), прежде чем получить доступ к настройкам.
Поэтому я также пытаюсь выяснить это.