问题标签 [django-celery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8272 浏览

python - 将 django-celery 与 redis 一起使用时出现 NotRegistered 异常

我编写了一个名为“task”的 django 应用程序,并将其添加到 *INSTALLED_APPS*。
但是,当我尝试在 django shell 中调用它时,它引发了一个 NotRegistered 异常。详细信息如下:

更新:
我的任务定义:

0 投票
3 回答
1835 浏览

python - 在 South 存在的情况下创建 djcelery 表

根据 django-celery 的文档,如果我有 South 我应该打电话

但是,它所做的只是创建一些迁移文件:

它不会像它应该做的那样创建下表。从 INSTALLED_APPS 中删除南后,我做了 syncdb:

但是,当存在 south 时,这些表不是用

奇怪的是,不知何故,昨天我能够使用 syncdb 获得这些表,但老实说,我不知道我做了什么让它工作并且无法重现它。这发生在 Windows 7 和 Ubuntu 11.10 上

我想知道我是否做错了。任何输入将不胜感激!

0 投票
1 回答
1242 浏览

python - 如何使用 Celery 在节点之间平均分配任务?

我正在使用 Celery 和 Django 来管理任务队列,并使用一个(或多个)小型(单核)EC2 实例来处理任务。

我有一些考虑。

  • 我的任务在单核上占用了 100% 的 CPU。- 使用任何可用的 CPU,但仅在一个内核中
  • 如果 2 个任务在同一个核心上进行,每个任务将减慢一半。
  • 我想尽快开始每项任务,不要让它成为问题。

现在说我有 4 个 EC2 实例,我用 "-c 5" 开始 celery。即每个实例 5 个并发任务。

在这个设置中,如果我有 4 个新任务,我想确保它们每个都去不同的实例,而不是 4 个去同一个实例并且每个任务都在争夺 CPU。

同样,如果我有 8 个任务,我希望每个实例一次获得 2 个任务,而不是 2 个实例每个处理 4 个任务。

芹菜是否已经像我描述的那样表现了?如果不是,那么我怎样才能让它表现得如此呢?

0 投票
1 回答
731 浏览

django - django-celery crontab 日程表的日期和月份

django-celery 的 crontab 类只支持分钟、小时和星期几。有没有办法支持其他正常的 cron 计划选项,例如月份和月份?还是我需要编写自己的 crontab 类并覆盖 is_due() 方法?

0 投票
9 回答
41717 浏览

python - 检测 Celery 是否可用/正在运行

我正在使用Celery来管理异步任务。然而,偶尔,celery 进程会停止,这会导致没有任何任务被执行。我希望能够检查 celery 的状态并确保一切正常,如果我检测到任何问题,则会向用户显示错误消息。从 Celery Worker 文档看来,我可以使用pinginspect来解决这个问题,但是 ping 感觉很笨拙,并且不清楚 inspect 到底是如何使用的(如果 inspect().registered() 为空?)。

对此的任何指导将不胜感激。基本上我正在寻找的是这样的方法:

编辑:它甚至不像 celery 2.3.3 上可用的 registered() (即使 2.1 文档列出了它)。也许 ping 是正确的答案。

编辑:Ping 似乎也没有像我想象的那样做,所以仍然不确定这里的答案。

0 投票
2 回答
740 浏览

django - Django-celery + redis 不显示任务

我在这个配置中使用 django-celery 和 redis:

在 django-admin 我看不到任务。配置中有哪些错误?

0 投票
2 回答
4866 浏览

django - Heroku Django Celery:NameError:未定义名称'DATABASES'

我正在按照教程让 celery 和 django 在 heroku 上运行。

但是,当我为工作人员输入指定的代码时,我在日志中收到此错误:

我的 settings.py 看起来像

当我在添加此行之前同步时CELERY_RESULT_DBURI = DATABASES['default'],它运行良好。根据文件

当您部署 Django 应用程序时,编译过程会将以下代码附加到您的 settings.py 以使用 DATABASE_URL 环境变量:

0 投票
1 回答
1216 浏览

python - 如何为每个 Django 模型实例安排定期 Celery 任务?

我的数据库中有一堆 Feed 对象,我试图让每个 Feed 每小时更新一次。我的问题是我需要确保没有任何重复的更新——它需要每小时不超过一次,但我也不希望提要等待两个小时才能更新。(如果它每小时 +/- 几分钟发生一次也没关系,但几分钟内发生两次是不好的。)

我将 Django 和 Celery 与 Amazon SQS 一起用作代理。我将提要更新代码设置为 Celery 任务,但我未能找到一种方法来防止重复,同时保持与在多个节点上运行的 Celery 兼容。

我当前的解决方案是向last_update_scheduledFeed 模型添加一个属性,并每 5 分钟运行一次以下任务(伪代码):

这容易受到许多同步问题的影响。例如,如果我的任务队列得到备份,该任务可能会同时运行两次,从而导致重复更新。我已经看到了一些解决方案(如Celery 的配方对 Stack Overflow 的改编),但 memcached 解决方案并不可靠,例如,在重新启动 memcached 或内存不足并清除旧数据时可能会发生重复。更不用说我不想为了一个简单的锁而不得不将 memcached 添加到我的生产配置中。

在一个完美的世界里,我想说:

但到目前为止,我的想象力使我无法实现该装饰器。

0 投票
2 回答
6152 浏览

python - Celery + Django:无法在 Windows 7 上启动 celerybeat

奇怪的问题在这里。我一直在开发一个 Django 应用程序,现在我正在尝试实现 Celery。我需要对正常任务和定期任务进行排队。我可以很好地启动 celeryd,并用它执行任务(我用 command 启动它python manage.py celeryd start --settings=settings --loglevel=INFO)。

在 Windows 上,您不能-beat/-b来启用节拍模式;您需要将 celerybeat 作为单独的服务启动(这在 Celery 文档的常见问题解答部分中有说明)。如果我在命令行中输入这个python manage.py celerybeat -s djcelery.schedulers.DatabaseScheduler --settings=settings --loglevel=INFO————我会得到一个这样的错误:

而 celerybeat 从未真正启动。所以我不能执行任何周期性任务......有什么想法吗?我只发现另一个页面有人突出显示了类似的错误,但没有提供解决方案。

如果需要任何进一步的信息,请告诉我。我很困惑,因为我找不到关于这个主题的任何信息,而且我今天整天都在尝试解决这个问题......谢谢。

0 投票
3 回答
13482 浏览

python - 没有 Celery 的 Django 中的后台处理

我有一个 Django 站点的一小部分,它保持两个用户之间的主持聊天会话的状态。基本上,第一个用户说话 3 分钟(其他人都不能),然后第二个用户说话,然后停顿 30 秒,这个过程再重复一次。我目前正在使用数据库和“RoomState”模型来管理房间的当前状态(谁可以说话等)。状态转换受到客户端每 10 秒向我的一个视图发送“ping”AJAX POST 消息的影响,该视图检查是否到了更改状态的时间。

这行得通,但绝对感觉很hacky。我想知道是否有比 django-celery + rabbitmq 更轻量级的东西来管理计时器上的短期后台任务。我意识到 web/Django 的本质是无状态的,但我只是想看看是否有人有一个简单的建议来以更可靠的方式管理状态转换。