Правильный способ решения ETA моей задачи Apply.async? - PullRequest
0 голосов
/ 09 октября 2018

Так что немного фона.Я пытаюсь выполнить свою задачу одновременно с доставкой заказа.Скажем, заказ на следующей неделе, я хочу, чтобы задание выполнялось за два дня (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 (), прежде чем получить доступ к настройкам.

Поэтому я также пытаюсь выяснить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...