Celery / Django 单个任务运行多次

2023-12-06

我面临一个问题,我将任务放入队列中并且它正在运行多次。 从 celery 日志中我可以看到同一个工作人员正在运行该任务......

[2014-06-06 15:12:20,731: INFO/MainProcess] Received task: input.tasks.add_queue
[2014-06-06 15:12:20,750: INFO/Worker-2] starting runner..
[2014-06-06 15:12:20,759: INFO/Worker-2] collection started
[2014-06-06 15:13:32,828: INFO/Worker-2] collection complete
[2014-06-06 15:13:32,836: INFO/Worker-2] generation of steps complete
[2014-06-06 15:13:32,836: INFO/Worker-2] update created
[2014-06-06 15:13:33,655: INFO/Worker-2] email sent
[2014-06-06 15:13:33,656: INFO/Worker-2] update created
[2014-06-06 15:13:34,420: INFO/Worker-2] email sent
[2014-06-06 15:13:34,421: INFO/Worker-2] FINISH - Success

然而,当我查看应用程序的实际日志时,它显示每个步骤 5-6 行日志 (??)。

我使用 Django 1.6 和 RabbitMQ。放入队列的方法是通过在函数上放置延迟。

该函数(添加任务装饰器)然后调用一个运行的类。

有谁知道解决此问题的最佳方法吗?

Edit:根据要求这里是代码,

views.py

在我看来,我通过...将数据发送到队列

from input.tasks import add_queue_project

add_queue_project.delay(data)

tasks.py

from celery.decorators import task

@task()
def add_queue_project(data):
    """ run project """
    logger = logging_setup(app="project")

    logger.info("starting project runner..")
    f = project_runner(data)
    f.main()

class project_runner():
    """ main project runner """

    def __init__(self,data):
        self.data = data
        self.logger = logging_setup(app="project")

    def self.main(self):
        .... Code

设置.py

THIRD_PARTY_APPS = (
    'south',  # Database migration helpers:
    'crispy_forms',  # Form layouts
    'rest_framework',
    'djcelery',
)

import djcelery
djcelery.setup_loader()

BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672 # default RabbitMQ listening port
BROKER_USER = "test"
BROKER_PASSWORD = "test"
BROKER_VHOST = "test"
CELERY_BACKEND = "amqp" # telling Celery to report the results back to RabbitMQ
CELERY_RESULT_DBURI = ""

CELERY_IMPORTS = ("input.tasks", )

celeryd

我运行的线路是启动芹菜,

python2.7 manage.py celeryd -l info

Thanks,


我没有给你确切的答案,但有几件事你应该考虑一下:

  • djcelery已弃用,因此如果您使用的是新版本celery可能存在某种冲突。

  • If your input应用程序列于INSTALLED_APPScelery 会发现它,所以你不需要将它添加到CELERY_IMPORTS = ("input.tasks", ),这可能是您的问题的原因,因为任务可能会多次加载

  • 尝试给你的任务命名@task(name='input.tasks.add'),它会知道这是同一个任务,无论您如何导入它。

查看您的设置,看起来您正在使用旧版本的芹菜,或者您正在使用旧版本的芹菜的旧配置。无论如何,请确保您拥有最新版本并尝试此配置而不是您拥有的配置:

BROKER_URL = 'amqp://<user>:<password>@localhost:5672/<vhost>'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

现在,您还必须以不同的方式配置 celery:

摆脱djcelery东西完全。

Create proj/celery.py在你的 Django 项目中:

from __future__ import absolute_import

import os

from celery import Celery

from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

app = Celery('proj')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

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

In your proj/__init__.py:

from __future__ import absolute_import

from proj.celery import app as celery_app

那么如果你的input应用程序是一个可重复使用的应用程序,不属于您的项目使用@shared_task代替@task装饰师。

然后运行芹菜:

celery -A proj worker -l info

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Celery / Django 单个任务运行多次 的相关文章

  • 如何使用 django (python) 和 s3 上传文件?

    我正在寻找一种将文件上传到 s3 的方法 我正在使用 django 我目前正在使用亚马逊的 python 库进行上传以及以下代码 View def submitpicture request fuser request session lo
  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • 检测/删除 Python 2 + GTK 中不成对的代理字符

    在Python 2 7中我可以成功转换Unicode字符串 abc udc34xyz 转换为 UTF 8 结果是 abc xed xb0 xb4xyz 但是当我将 UTF 8 字符串传递给例如时 pango parse markup or
  • 如何使用 xlrd 将新列和行添加到 .xls 文件

    如何向 xlrd 中的工作表添加新列和 或行 我有一个使用 open workbook 读取的 xls 文件 我需要在第一张表中添加一个新列 bouncebacks 然后在该表中添加新行 但我在 xlrd 文档中找不到任何显示如何添加新行和
  • 是否有更矢量化的方法来沿轴执行 numpy.outer ?

    gt gt gt x np array a0 a1 b0 b1 gt gt gt y np array x0 x1 y0 y1 gt gt gt iterable np outer x i y i for i in xrange x sha
  • 使用 3d 对象作为 3d 散点图中的标记 - Python

    使用下面的代码 我尝试模拟一个用罐头制成的碗 我希望每个标记都是一个罐头 最好的方法是什么 我真的很感激任何建议 谢谢 import pylab import numpy as np from math import pi sin cos
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • Django 测试 - NoReverseMatch

    为什么这个测试不起作用 这是我的观点 py class ObjectDetailView LoginRequiredMixin DetailView template name object detail html model Object
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • 如何删除 pandas 数据框中的唯一行?

    我遇到了一个看似简单的问题 在 pandas 数据框中删除唯一的行 基本上 相反drop duplicates https pandas pydata org pandas docs stable generated pandas Data
  • Python,多线程,获取网页,下载网页

    我想在一个站点批量下载网页 我的 urls txt 文件中有 5000000 个 url 链接 大约有300M 如何让多线程链接这些网址并下载这些网页 或者如何批量下载这些网页 我的想法 with open urls txt r as f
  • 如何在数据框中绘制包含三列的无向图,形成 3 种不同类型的节点(三方)?

    我正在尝试使用三个不同的列表绘制网络的可视化 这三个列表形成 3 种类型的节点 下面的代码正在运行 如图所示 需要两个列表 用户 ID 评分 但是 我希望我的图表是三部分的 即 user userId review ratings prod
  • 当 debug=false 时,Django 媒体文件不起作用

    settings py STATIC URL static STATICFILES STORAGE django contrib staticfiles storage StaticFilesStorage STATICFILES DIRS
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • Qcut Pandas:ValueError:Bin 边缘必须是唯一的

    我使用 Pandas 中的 Qcut 将数据离散化为大小相等的存储桶 我想要有价格桶 这是我的数据框 productId sell prix categ popularity 11997 16758760 0 28 75 50 524137
  • Scrapy 抓取并跟踪 href 中的链接

    我对 scrapy 很陌生 我需要从 url 的主页跟踪 href 到多个深度 再次在 href 链接内我有多个 href 我需要遵循这些href 直到到达我想要抓取的页面 我的页面的示例 html 是 初始页 div class page
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使
  • 在至少 7 天内连续三天登录该产品的用户

    我有一个用于用户参与的数据框 df 如下所示 time stamp user id 2013 01 01 10 05 23 1 2013 01 03 16 35 23 1 2013 01 06 11 06 35 1 2013 01 10 1

随机推荐

  • java守护线程

    大家好 当封闭的线程完成时 守护线程会停止工作吗 或者当 主 线程完成时守护线程将停止 我在 jre6 上测试了这个例子 结果是daemon thread stopped working when the enclosing it thre
  • 如何使单击事件适用于具有同一类的多个元素?

    我试图在每次用户单击多个图块时实现翻转效果 这有点像仪表板类型网页的开始 如何使点击事件适用于多个同名类 所有图块都具有相同的类名 但在不同的 box div 下 jquery 单击事件似乎仅在添加的最后一个图块中实现 而其他图块保持静态
  • Bash 将带引号的行分割成参数

    希望这个问题以前没有出现过 至少我没有找到答案 也许看起来不太好 假设我收到了这段文字 hello hello hello world 请告诉我为什么这两个脚本有不同的输出 1 文本保存在文件中 bin bash while read li
  • 我需要回答有关 setTimeout 的问题

    所以我们都知道 setTimeout 在执行某些操作之前会等待一定的时间 我的问题是 它是否先等待上面的代码完成执行 然后再等待一秒钟执行其他操作 或者只是等待一秒钟 无论上面的代码是否已完成执行 它都会执行其余的代码无论如何 代码 if
  • 具有多个外键的 Django 内联表单

    我正在尝试在我的模板中使用 Django 的 ModelForm 和内联表单 但是 我找不到任何文档可以整齐地映射到具有多个外键的数据库模型回到同一个表 这些是我的模型 models py class Universities models
  • 使用 ADO 和 win32com 获取 SQL Server 消息

    我目前正在尝试编写一个工具 使不懂计算机的用户可以轻松备份 SQL Server 数据库 为此 我希望使用 ADO win32com 和 adodbapi 的有趣组合 目前我可以轻松连接到服务器并发出BACKUP DATABASET SQL
  • 无法使用密钥、证书和 CA 为 Tomcat 创建密钥库 证书链长度:1

    我无法获得从 RapidSSL 购买的证书 该证书在 Tomcat 上运行 但在 Apache 上运行 RapidSSL 要求您安装 2 个中间 ca 文件 当我从私钥 证书和中间 CA s 创建密钥库时 我可以看到 Entry type
  • 如何在 Zend Framework 中添加更新查询限制?

    我如何添加LIMIT 1使用 Zend Framework 时更新的子句 我有点被迫不使用Zend Db Table Abstract update 因为它会自行执行 与甜蜜不同Zend Db Select 课程 这样做的原因只是预防措施
  • Javascript无限嵌套数组处理

    我正在尝试和我的朋友一起玩 他解决了8m 7s中提到的问题 对我来说已经20m了 我不知道如何处理 JavaScript 中的无限嵌套数组 问题是这样的 i will be an array containing integers stri
  • 方向改变时相机出现问题

    我正在开发一个应用程序 当设备方向从横向变为纵向或反之亦然时 该应用程序会调用不同的活动 横向模式的活动是增强现实活动 因此我使用相机向用户展示周围环境 但是 当我尝试返回纵向时 应用程序崩溃并显示以下错误 08 17 16 05 42 6
  • 在 Django 中为两种类型的用户子类 AbstractUser

    我正在 Django 1 5 中开发一个学校数据库系统 并计划拥有许多不同的用户类型 学生 员工 家长 这些用户类型是 AbstractUser 的子类 实际上是 AbstractUser 的另一个抽象子类 我只是试图将外部开发的应用程序添
  • QT“没有这样的插槽”错误[重复]

    这个问题在这里已经有答案了 这是我的类定义 hpp 文件的一部分 class RenderGraphFrame public QGLWidget public RenderGraphFrame QWidget parent private
  • 如何递归计算列表中的项目数

    我希望递归地计算列表中的项目 例如 我列出了几个列表 a b c h b d c e f h 我试图找到一种方法来找出列表 a 的长度 但是在列表 a 中 我有 b c 和 h 因此我的函数然后进入列表 b 并计算那里的元素数量 然后列表
  • 在 Windows 10 上为 PyPy3 安装 numpy 时出现问题

    我在尝试在 Windows 10 计算机上安装 pypy3 的 numpy 时遇到问题 由于我无法判断这个问题是源于我的 pypy3 安装还是其他原因 所以我在这里描述了迄今为止我所遵循的所有步骤 正如官方所示下载页面 I have 下载并
  • git pull 是否总是创建合并提交?

    Does git pull总是创建合并提交 如果我有一个我更新的功能分支git pull r master 然后我切换到 master 并执行git pull feature branch我不think我得到一个合并提交 你有一个关于 gi
  • 如何像模拟橡皮擦效果一样用线条路径绘制CALayer?

    我想用触摸事件模拟橡皮擦效果 以显示顶部某块后面的图像 例如灰色 像这样的东西 我已经找到解决方案很长时间了 但我不能做得很好 以下是我的自定义视图代码 自定义视图 m id initWithCoder NSCoder aDecoder i
  • Val 在 Scala 中的行为

    我在尝试从 Eclipse 执行以下代码时收到错误 因为我无法重新分配 Val 对吧 object Test def main args Array String val tempVal 100 val checkval if tempVa
  • 在 javafx 中创建图像覆盖蒙版

    我正在尝试做一件简单的事情 我有一个二值图像 我想要的只是将二值图像叠加在彩色图像上 但是二值图像中的白色像素应该是红色的 黑色像素应该是透明的 我已经习惯了 JavaFx 但我还是坚持使用这个 我知道我可以通过使用 PixelReader
  • Raspberry ALSA 声音输出/输入从机

    我正在尝试设置一台设备用于播放 另一台设备用于捕获 我的nano etc asound conf有这个 pcm default type asym playback pcm plughw 1 1 capture pcm plughw 1 0
  • Celery / Django 单个任务运行多次

    我面临一个问题 我将任务放入队列中并且它正在运行多次 从 celery 日志中我可以看到同一个工作人员正在运行该任务 2014 06 06 15 12 20 731 INFO MainProcess Received task input