2017-02-14 44 views
2

所以我一直在想如何制定计划任务,我找到了芹菜,并能够做出简单的计划任务。为此,我需要打开一个命令行并运行celery -A proj beat以执行任务。这在开发环境中可以正常工作,但将其投入生产时将成为问题。Django-Celery在生产?

那么如何让芹菜在没有命令行的情况下工作?当我的生产服务器在线时,我怎样才能确保我的调度程序能够跟上?芹菜可以做这个,还是我需要去另一种方法?

+0

您准确地期望在生产中发生什么问题? –

+0

即使通过服务器在另一台计算机上,我也无法在没有计算机的情况下运行芹菜。 – user2361174

+3

你可以随时守护它。检查了这一点,http://docs.celeryproject.org/en/latest/userguide/daemonizing.html –

回答

2

我们在我们的生产环境中使用芹菜,这恰好在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一个简单的例子芹菜

总结:。

  1. 创建标识要运行的任务时
  2. 加载配置文件到您的芹菜应用
  3. 获取云平台上运行代码中的配置文件。
  4. 运行芹菜就像你已经确定

希望有所帮助。

+0

所以基本上设置这个不需要在终端上键入'celery -A proj beat'? – Bijoy

+0

是的,你仍然想运行beat命令,以便Celery知道启动它。以下是我如何开始我的芹菜:'芹菜 - 一个task_module.tasks工人--loglevel =信息--beat'。 –