Как активировать представление django в качестве запланированной задачи на pythonanywhere?

Я собираюсь развернуть свое приложение Django на PythonAnywhere. У меня есть представление (ниже), которое очищает все гостевые учетные записи старше определенного периода времени. Я могу активировать это, вручную перейдя по url (/cleanup/), однако было бы неплохо запланировать это автоматически.

Я вижу, что PythonAnywhere обрабатывает запланированные задачи, которые запрашивают путь к .py файлу. Возможно ли выделить это представление в отдельный .py файл?

    MAX_GUEST_ACCOUNT_DAYS = 30

    def cleanup(request):
    """
    Deletes all guest user accounts and their media if older than MAX_GUEST_ACCOUNT_DAYS 
    """
    # Get all guest accounts created before the limit        
    expired_guests = User.objects.filter(guest=True).filter(date_joined__lt=timezone.now()-timedelta(days=MAX_GUEST_ACCOUNT_DAYS))

    for guest in expired_guests:
        guest.delete()

    print(f"Deleted guest account(s) older than {MAX_GUEST_ACCOUNT_DAYS} days.")
    return HttpResponse(f"Deleted guest account(s) older than {MAX_GUEST_ACCOUNT_DAYS} days.")

Вам нужно написать пользовательскую команду управления и запустить ее как запланированную задачу на PythonAnywhere. Вы можете выделить код, выполняющий то, что вам нужно, в отдельную функцию и вызывать ее как из представления, так и из команды управления.

https://docs.djangoproject.com/en/4.1/howto/custom-management-commands/

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