Как автоматически сохранять данные каждый месяц?

CentreInvoice модель:

class CentreInvoice(core_models.TimestampedModel):
    centre = models.ForeignKey(Centre, null=False, on_delete=models.CASCADE, related_name="c_centre_invoice")
    rcl_share_amount = models.FloatField(null=True)
    total_billed_amount = models.FloatField(null=True)
    start_date = models.DateField()
    end_date = models.DateField()
    paneluser = models.ForeignKey("panel.PanelUser", related_name="c_invoice_creator", on_delete=models.DO_NOTHING)
    invoice_no = models.CharField(max_length=255)
    total_advance_payment = models.FloatField(default=0)

Я использую эту модель для генерации счетов-фактур в моем проекте. Мне нужно сохранять их вручную каждый раз, но я хочу, чтобы это происходило автоматически каждый месяц. Есть ли способ сделать это? Любой совет будет принят с благодарностью.

Вы определенно можете достичь этого, используя Celery + Celery Beat + Redis

  • Celery: будет использоваться для фоновой задачи
  • Celery Beat: Celery beat - это планировщик
  • .
  • Redis: он будет использоваться в качестве брокера celery, вы можете использовать любой брокер, такой как rabbitmq и т.д.
  • .

Другим вариантом будет:

  1. Создайте пользовательскую команду в вашем приложении Django
  2. .
  3. Создайте задание cron и вызовите эту пользовательскую команду, используя это задание cron.

Я предпочитаю первый подход, потому что могу управлять всеми планировщиками на уровне кода.

PS: Я работаю над Django starter-kit, который будет иметь все эти основные функции, это будет Django-приложение с открытым исходным кодом :)

Вернуться на верх