【问题标题】:How to invoke celery task using celery daemon如何使用 celery 守护进程调用 celery 任务
【发布时间】:2016-03-31 08:09:35
【问题描述】:

我已经在我的 django 应用程序目录 myapp 下的 tasks.py 文件中编写了这个任务。

#periodic task that run every minute
@periodic_task(run_every=(crontab(hour="*", minute="*", day_of_week="*")))
def news():
    '''
    Grab url
    '''
    logger.info("Start task")
    now =  datetime.now()
    urls = []
    urls.append(crawler()) #crawler return dic obj
    for url_dic in list(reversed(urls)):
        for title, url  in url_dict.items():
            #Save all the scrape url in database
            Url.objects.create(title=headline, url=url)

    logger.info("Task finished: result = %s" %url)

此任务的主要目标是每分钟将 url 和标题推送到 django 数据库

要运行这个 celery 任务,我们需要使用 django ./manage 实用程序调用这些命令,如何将这些命令作为守护进程运行,我计划在 heroku 中托管这个应用程序

python manage.py celeryd --verbosity=2 --loglevel=DEBUG
python manage.py celerybeat --verbosity=2 --loglevel=DEBUG

但是我需要在后台将这两个命令命令作为守护进程运行,我们如何将这些命令作为守护进程运行,以便我的 celery 任务可以运行。

【问题讨论】:

    标签: python django heroku django-models celery


    【解决方案1】:

    一个快速的解决方法是在你的命令之后加上“&”,即

    python manage.py celeryd --verbosity=2 --loglevel=DEBUG &
    python manage.py celerybeat --verbosity=2 --loglevel=DEBUG &
    

    点击回车后,此任务将充当守护进程,仍会打印出有用的调试信息。因此,这对于初始阶段以及有时不严重依赖 celery 的小型应用程序来说非常有用。

    出于开发目的,我建议使用supervisor。参见THIS POST,它为 celery、django 和主管集成提供了非常好的信息。阅读文章的“将 Celery 工作者作为守护进程运行”部分。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 2015-06-16
      • 1970-01-01
      • 2018-06-11
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2014-11-24
      相关资源
      最近更新 更多