Как активировать представление 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/