Есть несколько аспектов вашего вопроса и несколько способов сделать это, я дам вам краткую информацию о том, с чего начать.
Pythoni c -way
Вы можете развернуть работника сельдерея, который будет выполнять запланированные задания. Вы можете посмотреть документацию по сельдерею о том, как это сделать, в python: https://docs.celeryproject.org/en/latest/userguide/workers.html
Вы, вероятно, можете получить gr asp о том, как расширить развертывание для поддержки сельдерея. с эта статья на dev.to , которая показывает полное развертывание сельдерея:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: celery-worker
labels:
deployment: celery-worker
spec:
replicas: 1
selector:
matchLabels:
pod: celery-worker
template:
metadata:
labels:
pod: celery-worker
spec:
containers:
- name: celery-worker
image: backend:11
command: ["celery", "worker", "--app=backend.celery_app:app", "--loglevel=info"]
env:
- name: DJANGO_SETTINGS_MODULE
value: 'backend.settings.minikube'
- name: SECRET_KEY
value: "my-secret-key"
- name: POSTGRES_NAME
value: postgres
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-credentials
key: user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-credentials
key: password
Kubernetes-way
В Kubernetes (Openshift - это дистрибутив Kubernetes) - вы можете создать cronjob, который будет выполнять заданную задачу c по расписанию, подобную этой:
kubectl run --generator=run-pod/v1 hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
, которую я извлек из Kubernetes docs .
Cloud way
Вы также можете использовать безсерверную платформу, например, AWS Lambda для выполнения запланированного задания. Самое замечательное в AWS Lambda - это то, что их бесплатного уровня будет более чем достаточно для вашего варианта использования.
См. AWS пример кода здесь