芹菜中的简单定期任务不起作用,但没有错误



我是芹菜的新手。我试图正确配置芹菜与我的Django项目。为了测试芹菜是否工作,我创建了一个周期任务,它应该每2秒打印"periodic_task"。遗憾的是它不能工作,但没有错误。

1已安装rabbitmq

2 Project/project/celery.py

from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
from django.conf import settings  # noqa
app = Celery('project')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def myfunc():
    print 'periodic_task'
@app.task(bind=True)
def debudeg_task(self):
    print('Request: {0!r}'.format(self.request))

3 Project/project/__init__.py

from __future__ import absolute_import
from .celery import app as celery_app 

4 Settings.py

INSTALLED_APPS = [
    'djcelery',
    ...]
...
...
CELERYBEAT_SCHEDULE = {
  'schedule-name': {
                      'task': 'project.celery.myfunc',  # We are going to create a email_sending_method later in this post.
                      'schedule': timedelta(seconds=2),
                      },
  }

python manage.py之前,我运行celery -A project worker -l info

仍然不能看到任何"periodic_task"每2秒打印在控制台…你知道该怎么做吗?

编辑芹菜控制台:

 -------------- celery@Milwou_NB v3.1.23 (Cipater)
---- **** -----
--- * ***  * -- Windows-8-6.2.9200
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         dolava:0x33d1350
- ** ---------- .> transport:   amqp://guest:**@localhost:5672//
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
 -------------- .> celery           exchange=celery(direct) key=celery

[tasks]
  . project.celery.debudeg_task
  . project.celery.myfunc
编辑:

将worker更改为beat后,似乎可以工作。每2秒就会发生一些事情(现在改成5秒),但我看不到任务的结果。(我可以把任何东西放入CELERYBEAT_SCHEDULE,即使是错误的路径,它也不会引发任何错误…)

我把我的函数代码改为:

@app.task(bind=True)
def myfunc():
    # notifications.send_message_to_admin('sdaa','dsadasdsa')
    with open('text.txt','a') as f:
        f.write('sa')

但是我找不到text.txt。

> celery -A dolava beat -l info
celery beat v3.1.23 (Cipater) is starting.
__    -    ... __   -        _
Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> djcelery.schedulers.DatabaseScheduler
    . logfile -> [stderr]@%INFO
    . maxinterval -> now (0s)
[2016-10-26 17:46:50,135: INFO/MainProcess] beat: Starting...
[2016-10-26 17:46:50,138: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:51,433: INFO/MainProcess] DatabaseScheduler: Schedule changed.
[2016-10-26 17:46:51,433: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:51,812: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)
[2016-10-26 17:46:51,864: INFO/MainProcess] Writing entries...
[2016-10-26 17:46:57,138: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)
[2016-10-26 17:47:02,230: INFO/MainProcess] Scheduler: Sending due task schedule-name (dolava_app.tasks.myfunc)

尝试运行

$ celery -A project beat -l info

相关内容

  • 没有找到相关文章

最新更新