所以我一直在想如何制定计划任务,我找到了Celery,并能够制定简单的计划任务。要做到这一点,我需要打开一个命令行并运行celery -A proj beat
来执行任务。这在开发环境中运行良好,但当将其投入生产时,这将是一个问题。
那么,在不使用命令行的情况下,我如何才能让芹菜正常工作呢?当我的生产服务器联机时,我如何确保我的调度程序与它同步?芹菜能做到这一点吗?还是我需要采用另一种方法?
我们在生产环境中使用Celery,而生产环境恰好在Heroku上。我们正在向AWS过渡。在这两种环境中,芹菜都能很好地哼唱。
了解您的生产环境会是什么样子会很有帮助。我有点困惑,为什么你会担心关闭电脑,因为使用Django意味着你正在运行一个网站。。。你是用笔记本电脑服务你的网站吗??
无论如何,假设您将从云平台运行生产服务器,您所要做的就是发送运行Django所需的任何命令行和Celery的命令行(正如您在问题中已经指出的)。
在配置方面,你说你有"计划的"任务,这意味着你已经在config.py文件中设置了一个节拍时间表。如果没有,它应该是这样的(假设你有一个名为tasks.py的模块,它保存了你的芹菜任务定义:
from celery.schedules import crontab
beat_schedule = {
'task1': {
'task': 'tasks.task_one',
'schedule': 3600
},
'task2': {
'task': 'tibController.tasks.update_old_retail',
'schedule': crontab(hour=12, minute=0, day_of_week='mon-fri'
}
}
然后在你的tasks.py中,只需调用配置文件,你就可以这样做:
from celery import Celery
import config
app = Celery('tasks')
app.config_from_object(config)
您可以在文档中找到更多关于crontab的信息。您也可以为一个简单的Celery示例签出此repo。
总结:
- 创建一个配置文件,用于标识在
- 将配置文件加载到Celery应用程序中
- 获取一个云平台来运行您的代码
- 像你已经识别的那样运行芹菜
希望能有所帮助。