所以我一直在想如何制定计划任务,我找到了芹菜,并能够做出简单的计划任务。为此,我需要打开一个命令行并运行celery -A proj beat
以执行任务。这在开发环境中可以正常工作,但将其投入生产时将成为问题。Django-Celery在生产?
那么如何让芹菜在没有命令行的情况下工作?当我的生产服务器在线时,我怎样才能确保我的调度程序能够跟上?芹菜可以做这个,还是我需要去另一种方法?
所以我一直在想如何制定计划任务,我找到了芹菜,并能够做出简单的计划任务。为此,我需要打开一个命令行并运行celery -A proj beat
以执行任务。这在开发环境中可以正常工作,但将其投入生产时将成为问题。Django-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的一个docs您还可以检出该repo一个简单的例子芹菜
总结:。
希望有所帮助。
所以基本上设置这个不需要在终端上键入'celery -A proj beat'? – Bijoy
是的,你仍然想运行beat命令,以便Celery知道启动它。以下是我如何开始我的芹菜:'芹菜 - 一个task_module.tasks工人--loglevel =信息--beat'。 –
您准确地期望在生产中发生什么问题? –
即使通过服务器在另一台计算机上,我也无法在没有计算机的情况下运行芹菜。 – user2361174
你可以随时守护它。检查了这一点,http://docs.celeryproject.org/en/latest/userguide/daemonizing.html –