微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

列出任务后,celery worker 不加载任何内容,任务状态始终为挂起

如何解决列出任务后,celery worker 不加载任何内容,任务状态始终为挂起

Celery.py 文件

from __future__ import absolute_import
import os
from celery import Celery
from vortex import settings

os.environ.setdefault("DJANGO_SETTINGS_MODULE","myapp.settings")
app = Celery("myapp")
app.config_from_object("django.conf:settings",namespace="CELERY")
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

task.py 文件

from celery import shared_task

@shared_task(bind=True)
def debug_task1(xyz):
    print('Running a task using celery',str(xyz))
    return True

views.py(当服务器开始运行时将调用 debug_task1())

def hello(request):
    try:
        t = debug_task1.delay()
        print("task status:",t.status)
        print("task id:",t.id)
        print("task result:",t.result)

settings.py

CELERY_broKER_URL = 'redis://127.0.0.1:6379'
CELERY_TIMEZONE = TIME_ZONE
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_ENABLE_REMOTE_CONTROL = True
CELERY_RESULT_SERIALIZER = "json"
CELERY_RESULT_CACHE_MAX = -1
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379'
CELERY_TASK_ANNOTATIONS = {
    "celery.chord_unlock": {"soft_time_limit": 300,"default_retry_delay": 5}
}
CELERY_TASK_RESULT_EXPIRES = 600
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_SERIALIZER = "json"
CELERY_TASK_ACKS_LATE = True
CELERY_TASK_SEND_SENT_EVENT = True
CELERY_TASK_REJECT_ON_WORKER_LOST = True
CELERY_TASK_ALWAYS_EAGER = False
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
CELERY_WORKER_POOL_RESTARTS = True
CELERY_WORKER_HIJACK_ROOT_LOGGER = False

CELERYD_TASK_TIME_LIMIT = 24 * 3600  # A task can run for max of 24hrs
CELERYD_SEND_EVENTS = True
CELERYD_MAX_TASKS_PER_CHILD = 20
CELERYD_WORKER_LOST_WAIT = 59

服务器结果:

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
task status: PENDING
task id: 79e35cf7-0a3d-4786-b746-2d3dd45a5c16
task result: None

工人结果:

 -------------- celery@XYZ v5.0.5 (singularity) #XYZ is the system name
--- ***** -----
-- ******* ---- Windows-XXX 2021-07-02 13:10:54
- *** --- * ---
- ** ---------- [config]
- ** ---------- .> app:         myapp:0x18d6ff223e0
- ** ---------- .> transport:   redis://127.0.0.1:6379//
- ** ---------- .> results:     redis://127.0.0.1:6379/
- *** --- * --- .> concurrency: 8 (solo)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery

[tasks]
  . tasks.task.debug_task1

列出任务后,worker 没有显示任何内容(例如“已连接到 redis”)。 此外,任务的状态总是待处理

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?