如何为Django Celery任务制定一个函数

时间:2017-02-02 05:24:50

标签: python django celery celerybeat

我正在尝试在发送电子邮件的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模型表

CrontabSchedule

-id
-minute
-hour
-day_of_week
-day_of_month
-month_of_year

PeriodicTask

-id
-name
-task
-args
-kwargs
-queue
-exchange
-routing_key
-expires
-enabled
-last_run_at
-total_run_count
-date_changed
-description
-crontab_id
-interval_id

0 个答案:

没有答案