celery

来自一个域的 celery 任务出现在同一个框中托管的另一个域的 django 管理员上
celery

来自一个域的 celery 任务出现在同一个框中托管的另一个域的 django 管理员上

我遇到了一个相当有趣的问题,我没有在其他地方找到它。我有 2 个 django-celery 项目在 2 个不同的域上使用 redis 运行,但显然托管在同一个框中。我没有 sudo 访问权限,所以我不使用 reddis 守护程序或 celery 守护程序,而是通过 cron 检查/启动它们,如下所示: ps -u $USER | grep redis-server >/dev/null || $HOME/bin/redis-server $HOME/redis-stable/redis.conf ps -u $USER | grep python...

Admin

根据代理(redis)队列大小自动扩展 celery 服务器的方法
celery

根据代理(redis)队列大小自动扩展 celery 服务器的方法

我正在开展一个项目,该项目要求在代理(redis)队列持续高于预定阈值大小时推出新的 celery 服务器,并在队列大小下降时关闭新的框。我有脚本来负责引入新框并确保在其上运行正确的配置。我计划在频繁(15 分钟)间隔后通过 redis-cli 检查队列,如果大小大于阈值,则缩短检查之间的时间间隔(例如 3 分钟)检查两次,然后推出新的框并按照相同的方法关闭新服务器。 我对芹菜还不熟悉,如果能得到一些关于这种方法的建议就太好了。 谢谢 ...

Admin

Debian 12 上的 Celery/Redis 中的 DNS 解析问题 - 特定于 VPS 提供商
celery

Debian 12 上的 Celery/Redis 中的 DNS 解析问题 - 特定于 VPS 提供商

在某些 Debian 12 安装中,我在 Celery/Redis 设置中遇到了 DNS 解析方面的一个特殊问题。看来这个问题也可能与 VPS 网络设置有关。我不知所措,非常感谢任何专家的指导。 我们使用 Celery 每 40 秒执行一次任务,使用本地 Redis 作为队列。每个任务将当前时间戳写入中央远程 Redis: def create_redis_connection_sync(): return redis.Redis( host=settings.REDIS_URL, password=settings....

Admin

Nginx/Celery/Django 在 EC2 上的 CPU 负载过高导致服务器出现故障
celery

Nginx/Celery/Django 在 EC2 上的 CPU 负载过高导致服务器出现故障

我在 EC2 服务器上运行一个 Django Web 应用,使用的是 Nginx 和 uWSGI。我还让 Celery 运行一些后台任务(没有 CRON 作业,只是偶尔执行用户操作)。 该应用程序处于早期封闭测试阶段,目前没有活跃用户。 在过去三天里,服务器在经历超高的 CPU 负载后会随机崩溃(见屏幕截图)。 在此之前,该应用程序运行了数周,没有出现问题。我对网站进行了一些程序性更改,但没有对服务器配置进行更改(主要是合并模型)。 我尝试从日志(Nginx access.log、error.log 和 Django debug.log)中找出一些信息,但没...

Admin

systemd 中的内存限制
celery

systemd 中的内存限制

我正在使用 systemd 在 Ubuntu 18.04 LTS 服务器上运行 Celery(一个 python 分布式任务调度程序)。 我必须安排大部分长时间运行的任务(执行需要几分钟),根据数据的不同,这些任务最终可能会消耗大量 RAM。我想采取某种安全措施来控制内存使用量。 我读过了这里MemoryHigh你可以使用和MemoryMax选项控制 systemd 服务使用的 RAM 量 我已经在我的 Celery 服务设置中使用了这些选项,并且我观察了当 Celery 服务达到给定的限制时会发生什么htop。 服务停止执行并处于“D”状态,但停留在该状态...

Admin

Celery:查找我们使用的设置
celery

Celery:查找我们使用的设置

我有一台别人设置的 Celery 服务器,使用拜占庭系统来管理配置。我想知道我们的服务器使用的 Cerely 设置,而无需查看代码。我与 Cerely 服务器建立了 SSH 连接。是否有命令可以从中获取设置?从 Python shell 执行操作也很好。 ...

Admin

同一台服务器上有多少个 celery 和 gunicorn 工作者?
celery

同一台服务器上有多少个 celery 和 gunicorn 工作者?

我有一台服务器运行由 gunicorn 和 Celery 任务队列提供的 Django 应用程序。 古尼康文档建议(2 x $num_cores) + 1 作为默认工人数量。 Celery 文档显示 Celery 工作者的数量默认为 1 x $num_cores。 两者都建议通过实验来找到合适的数字。 我的问题是,在同一台机器上运行 Gunicorn 和 Celery 的经验法则是什么?在一台八核机器上,我应该从 17 个 Gunicorn 和 8 个 Celery 工作程序开始吗?或者从 9 个 Gunicorn 和 4 个 Celery 工作程序开始是否...

Admin

Celery 中的工作进程
celery

Celery 中的工作进程

我有一个 CPU 密集型 Celery 任务,在其中一个任务中可以使用 joblib 进一步并行化。默认情况下,使用 celery 启动工作程序将创建一个池,其最大并发数等于 CPU/核心数(在我的情况下为 36)。 我的问题是,使用这种配置,是否意味着每个工作进程将只有 1 个核心可用,并且不会受益于 joblib 的并行化?或者当工作进程队列中没有其他任务时,它会使用所有核心。 例如: @app.task # picked by celery worker process def a_task(): algo = Algo(n_jobs=...

Admin

AWS 自动扩展:如何关闭不繁忙的机器
celery

AWS 自动扩展:如何关闭不繁忙的机器

我们有一个自动扩展组,用于生成工作服务器。每个工作服务器都运行 celery 进程。我们使用 cloudwatch 监控 celery 队列长度,并根据该队列长度生成/终止自动扩展服务器。您在此答案中看到的是我们这样做的方式:有没有办法使用 Celery 使用的 RabbitMQ 队列的长度来启动自动缩放组中的实例? 我们的终止策略是首先终止最老的服务器。当队列长度连续 300 秒为零时,就会发生这种情况。 正常设置有 3 台始终可用的服务器。仅当队列长度超过一定数量时,自动缩放组才会启动。假设队列中有 10 个作业持续 30 秒。 我没有在我的 ce...

Admin

防止 Ubuntu EC2 服务器因 CPU 使用率过高而锁定
celery

防止 Ubuntu EC2 服务器因 CPU 使用率过高而锁定

我有一台运行 celery 任务的服务器。它使用 运行几个工作线程celery multi start 2,使用 进行配置systemd。有时,它会超负荷工作并达到 100% CPU。当这种情况发生时,一切都会完全锁定:我无法通过 ssh 进入机器,任务本身停止工作(例如,我可以从另一台机器上看到数据库中不再创建记录)。 工作线程在我的 systemd 配置中运行Nice=2。 为什么 CPU 问题会导致机器锁定?(我很确定这不是内存问题,因为当机器内存不足时,它只会杀死工作线程)。有什么方法可以阻止这种情况发生吗?我宁愿不杀死任务,而是暂停工作线程,直...

Admin

在从 RabbitMQ 队列开始部署之前删除消费者
celery

在从 RabbitMQ 队列开始部署之前删除消费者

我们设置了具有 8 个节点的 Celery 工作器。它在 RabbitMQ 中创建了 8 个队列。 当我们开始部署新的更改时,ansible playbook 中的最后一步是 Celery 重启。 Celery 重启必须关闭每个节点并启动该节点。但是,由于有继续消息进入队列并被工作节点使用,因此需要更多时间来重启 Celery 工作节点。 我认为,如果我们在开始部署时将消费者从 Celery 工作队列中删除,那么 Celery 节点将不会消费更多消息,而只会处理已消费的消息。这样,Celery 可能会快速重启。 我不确定,我正在朝着正确的方向思考,但...

Admin

ubuntu 授予用户在没有 SU 的情况下运行文件的权限-运行 python celery
celery

ubuntu 授予用户在没有 SU 的情况下运行文件的权限-运行 python celery

我在 ubuntu 上将 celery 作为守护进程运行时遇到了问题。 我已按照文档中的建议运行了调试命令http://docs.celeryproject.org/en/latest/userguide/daemonizing.html#example-configuration(故障排除部分) sh -x /etc/init.d/celeryd start 输出的最后一行看起来像是切换到 celery 用户并尝试运行该文件 su celery -c /home/ubuntu/.local/bin/celery 所以我以 celery 用户身...

Admin

Rabbitmq 由于“进程/其他”导致内存不足
celery

Rabbitmq 由于“进程/其他”导致内存不足

我正在使用 rabbitmq:3.6.11-management docker 镜像在 kubernetes 中运行 rabbitmq (https://hub.docker.com/_/rabbitmq/)。查看管理仪表板,似乎“进程/其他”类别占用了大量内存(比任何其他类别都多)。我观察到几次节点超出高水位并耗尽所有消息,但“进程/其他”内存不会缩小,因此代理保持不活动状态,直到手动重新启动 pod。发生故障时,内存图表如下所示: 内存不足 我使用 rabbitmq 作为许多 Celery 工作器(大约 30 个)集群的后端,没有对默认 Celery...

Admin

如何在 RabbitMQ 管理员中查看待处理的消息?
celery

如何在 RabbitMQ 管理员中查看待处理的消息?

如何在 RabbitMQ 管理员中查看待处理/排队的消息? 我运行了 RabbitMQ 管理工具,概览页面显示有超过 4000 条消息已就绪。它还显示有超过 90 个消费者。然而,就绪消息的数量没有变化,而且我的 Celery 处理器没有报告它们正在处理任何任务。 我如何查看 Rabbit 中排队的实际消息?管理页面似乎没有显示任何消息。单击“队列”下的内容会显示包含最多就绪消息的队列,但再次单击其中一个队列不会显示任何消息。 此外,我已将 Celery 配置为运行 2 个进程,1 个使用队列“default”,另一个使用队列“long”,用于 10 ...

Admin