Python 芹菜节拍任务不执行

Python 芹菜节拍任务不执行,python,django,celery,django-celery,celerybeat,Python,Django,Celery,Django Celery,Celerybeat,我正在用芹菜节拍学习Django的周期性任务。但是我的任务没有执行 我的\uuuu init\uuuuu.py文件: from __future__ import absolute_import, unicode_literals from .celery import app as celery_app __all__ = ('celery_app',) from __future__ import absolute_import, unicode_literals import os

我正在用芹菜节拍学习Django的周期性任务。但是我的任务没有执行

我的
\uuuu init\uuuuu.py
文件:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app


__all__ = ('celery_app',)
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new_todo_app.settings')
app = Celery('new_todo_app')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
from celery import Celery
from celery import shared_task

app = Celery('tasks', broker='pyamqp://guest@localhost//')


@shared_task
def progress_bar():
    print("Executed every minute")
我的
芹菜.py
文件:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app


__all__ = ('celery_app',)
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new_todo_app.settings')
app = Celery('new_todo_app')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
from celery import Celery
from celery import shared_task

app = Celery('tasks', broker='pyamqp://guest@localhost//')


@shared_task
def progress_bar():
    print("Executed every minute")
我的
tasks.py
文件:

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app


__all__ = ('celery_app',)
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new_todo_app.settings')
app = Celery('new_todo_app')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
from celery import Celery
from celery import shared_task

app = Celery('tasks', broker='pyamqp://guest@localhost//')


@shared_task
def progress_bar():
    print("Executed every minute")
和我的
settings.py
文件

CELERY_BROKER_URL = 'amqp://localhost'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Asia/Baku'
CELERY_ENABLE_UTC = True


CELERY_BEAT_SCHEDULE = {
    'progress-bar': {
       'task': 'app1.tasks.progress_bar',
       'schedule': 5.0,
    },
}
我写下了“芹菜殴打工人”的话:

#celery -A new_todo_app beat -l info
芹菜节拍开始,但任务不执行。我尝试了调试日志记录模式,得到:

Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%DEBUG
    . maxinterval -> 5.00 minutes (300s)
[2019-12-04 19:35:24,937: DEBUG/MainProcess] Setting default socket timeout to 30
[2019-12-04 19:35:24,938: INFO/MainProcess] beat: Starting...
[2019-12-04 19:35:24,975: DEBUG/MainProcess] Current schedule:
<ScheduleEntry: progress-bar app1.tasks.progress_bar() <freq: 5.00 seconds>
<ScheduleEntry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>
[2019-12-04 19:35:24,975: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2019-12-04 19:35:24,977: DEBUG/MainProcess] beat: Waking up in 5.00 minutes.
配置->
. 经纪人->amqp://guest:**@本地主机:5672//
. 加载器->芹菜.loaders.app.AppLoader
. 调度器->芹菜.beat.PersistentScheduler
. db->celerybeat时间表
. 日志文件->[stderr]@%DEBUG
. 最大间隔->5.00分钟(300秒)
[2019-12-04 19:35:24937:DEBUG/MainProcess]将默认套接字超时设置为30
[2019-12-0419:35:24938:INFO/MainProcess]节拍:开始。。。
[2019-12-04 19:35:24975:调试/主进程]当前计划:

你怎么知道他们没有执行?我觉得一切都很好,您显示的日志实际上显示了这一点。@dirkgroten我调用了
tasks.py
中的
progress\u bar
函数,它有
print()
语句,所以我可以查看它是否实际执行。但是,当我运行芹菜节拍时,我在终端中没有得到任何东西,这是因为当任务在不同的进程中运行时,print语句会转到系统日志中的stdout。如果您查看/var/log/syslog,您应该会看到您的print语句(假设您在Linux/Unix上,并且可以在其中找到所有其他内容)。您需要将日志记录添加到芹菜工人,并将日志记录到文件中。或者只是做一些有用的事情,比如写入数据库,你就会看到它。@dirkgroten我试着用芹菜来运行芹菜,芹菜是一个新的应用程序工作者-B-l INFO
,实际上我得到了我预期的函数输出。单独运行芹菜工人和beat或使用
…工人-B
标志有什么区别?