你的问题有几个方面和几种方法,我会给你一些关于从哪里开始的简要信息。
Python 方式
您可以部署一个 celery worker 来处理预定的作业。您可以查看 celery 文档以了解如何在 python 中解决它:https://docs.celeryproject.org/en/latest/userguide/workers.html
您可能可以从this article on dev.to 了解如何扩展您的部署以支持 celery,它显示了 celery 的完整部署:
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 方式
在 Kubernetes 中(Openshift 是 Kubernetes 的一个发行版)——您可以创建一个 cronjob,它会按计划执行特定任务,类似于:
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 中提取的。
云端方式
您还可以使用无服务器平台,例如AWS Lambda 执行计划的作业。 AWS Lambda 很酷的一点是,它们的免费套餐对于您的用例来说绰绰有余。
请参阅 AWS example code here