我正在尝试在发送电子邮件的tasks.py(或celery.py)中运行一个函数。参数“msg”和“email”将因计划而异。 在CrontabSchedule djcelery数据库表中,我有几个cron schedule例子:
CrontabSchedule:0 4 * * *
此cron还链接到PeriodicTask djcelery数据库表中的任务。例如:
PeriodicTask:celery.send_email
可以通过执行来访问PeriodicTask和CrontabSchedule。
来自djcelery.models导入PeriodicTask,CrontabSchedule
3个模型通过CrontabSchedule.id链接---> PeriodicTask.crontab_id ---> Schedule.crontab_id
myapp.models.Schedule由我定义,而另外2来自djcelery。
现在,当芹菜进入此cron计划运行作业任务时,任务SendEmail函数如何能够从SendEmail的数据库表条目中知道要使用哪个“Schedule.message”和“Schedule.email”函数参数分别为“msg”和“email”。这是一个任务名称很多CrontabSchedule,PeriodicTask,Schedule条目的情况。我将欣赏一个骨架(示例代码)SendEmail函数。
请帮忙。我希望我解释得很好,因为它转过头来。
tasks.py
@task
def SendEmail(msg, email):
model.py
class Schedule(models.Model):
email = models.OneToOneField(MyCustomUser, unique=True)
name = models.CharField(max_length=30, default='Example')
message = models.CharField(max_length=918)
startdatetime = models.DateTimeField(blank=False, default=datetime.now)
recurrences = RecurrenceField()
crontab_id = models.CharField(max_length=999999, unique=True)
Django Celery模型表
-id
-minute
-hour
-day_of_week
-day_of_month
-month_of_year
-id
-name
-task
-args
-kwargs
-queue
-exchange
-routing_key
-expires
-enabled
-last_run_at
-total_run_count
-date_changed
-description
-crontab_id
-interval_id