问题标签 [celerybeat]

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 投票
1 回答
437 浏览

celery - 更新“djcelery_periodictask”表时出现死锁

我有两个简单的周期性 celery 任务,它们在晚上运行,一个在凌晨 2 点运行,另一个在凌晨 3 点运行,并且有时会抛出关于djcelery_periodictask我不太了解的桌子上的死锁的异常。似乎一个任务试图更新djcelery_periodictask,而另一个任务仍然持有共享锁:

对仅包含几行的表的两个简单更新怎么会陷入死锁?

0 投票
2 回答
363 浏览

django - What is the best "architecture" for running celery (and celery beat) in production environment (debian server)?

I"m trying to figure out the best "architecture" so our django projects hosted on debian server could use celery and celery beat. He are my requirements:

  • Celery workers and celery beats should be able to run after server restart automatically.
  • Using standard Debian packages is preferred.
  • What doesn't have to be installed globally, should be installed in project virtualenv.
  • Linux user, who is owner of django project shouldn't need sudo permissions to deploy project

Based on these requirements I came to these conclusions:

  • It would be good to use supervisord for deamonizing workers and beat. Supervisord is in standard debian packages and installing it this way means that running of supervisord after server restart is taken care of (this is the main reason why I dont want to install it locally in virtualenv for every project)
  • Celery could be installed locally for every project in virtualenv.

Under these circumstances, when I'm deploying NEW project, next to creating new linux user, setting up apache virtualhost etc., which Im doing as a root, I would also add new config file for supervisord, which seems OK to me. Then when Im deploying new version of project using Fabric im working only under project user.

The only unresolved problem (which I found until now) of this solution is that schedule configuration for celery beat is written in django settings, but beat deamon isnt able to recognize change in the configuration until it's reloaded. However project user isn't allowed to make the reload.

My question is how should I solve this problem or what other architecture would you recommend to me? Thank you.

0 投票
1 回答
471 浏览

python-2.7 - 如何使 Celery 中的两个任务互斥?

有没有办法禁止两个不同的任务在 Celery 中同时运行?我正在考虑定义一个并发级别 = 1 的新队列,并将这些任务发送到该队列,但我找不到示例。那可能吗?

谢谢!

0 投票
2 回答
3662 浏览

python - celery celerybeat 可以在没有 Django 的情况下使用数据库调度程序吗?

我有一个包括 Django 的小型基础设施计划。但是,由于我使用 Django 的经验,我真的很喜欢 Celery。我真正需要的是 Redis + Celery 来制作我的项目。我不想使用本地文件系统,而是将所有内容都保存在 Redis 中。我当前的架构对所有内容都使用 Redis,直到它准备好将结果转储到 AWS S3。诚然,我没有充分的理由使用 Redis 而不是文件系统。我刚刚在考虑到 Docker 和可扩展性的情况下投入了大量资金来构建它,不这样做感觉不对。

0 投票
1 回答
3467 浏览

python - CELERYBEAT_SCHEDULE 在你的项目中去哪里了?

我已经多次阅读了几页 Google 结果,我对如何布局我的项目感到非常困惑。我已经设法让 Celerybeat 使用periodic_task 装饰器工作,但它已被贬值并且正在被删除。据我了解,文档建议 CELERYBEAT_SCHEDULE 是替代品。我已经创建了一个完全如图所示的文件,但还没有弄清楚:

  • 如何命名?
  • 放在哪里?

我发现很难找到在非 Django项目中使用 Celery 的正确方法。

0 投票
1 回答
717 浏览

django - 一天中随机时间间隔的周期性任务 celery django

我必须在一天的上午 10 点、下午 1 点和 12 点从源下载一些文件,下载完成后,我需要将它们发送到我的数据库。我想每天都这样做。我应该在“定期任务代码”的空间中写什么。另外请告诉我是否还有其他错误?提前致谢。

0 投票
3 回答
4837 浏览

python - 芹菜节拍时间表:启动芹菜节拍时立即运行任务?

如果我创建一个 celery beat 时间表,使用timedelta(days=1),第一个任务将在 24 小时后执行,引用 celery beat 文档:

使用 timedelta 作为计划意味着任务将以 30 秒的间隔发送(第一个任务将在 celery beat 开始后 30 秒发送,然后在最后一次运行后每 30 秒发送一次)。

但事实是,在很多情况下,调度程序在启动时运行任务实际上很重要,但是我没有找到允许我在 celery 启动后立即运行任务的选项,是我没有仔细阅读,还是芹菜缺少这个功能吗?

0 投票
1 回答
4047 浏览

python - 在 Windows 上运行 celery beat - 不可能完成的任务?

我坚持使用 redis 作为后端在 Windows 7(以及后来的 2013 服务器)上运行 celery 3.1.17。

在我的celery.py文件中,我定义了一个带有一个计划任务的应用程序

任务是将一行写入文件

从命令行运行节拍服务

看起来很有希望,但什么也没发生。没有任何内容被写入文件。

关于runnig beat on windows的celery文档参考了这篇2011年的文章。文章解释了如何celeryd在windows上作为调度器任务运行。celeryd此后已被弃用,并且文章中所述的命令不再有效(没有celery.bin.celeryd模块)。

那么,这里的解决方案是什么?

谢谢。

0 投票
0 回答
161 浏览

celery - 在发布到消息总线之前拦截和停止 celery beat 任务

我正在使用信号在发布之前拦截 celery beat 任务。这工作正常。但是,除此之外,我还想执行一些逻辑,并根据结果可能取消任务。

除了引发异常之外,我找不到从事件处理程序中取消任务的方法,这似乎非常不雅。

背景是我正在使用缓存锁实现分布式任务处理,并且在发布之前对锁执行CAS操作。

有没有办法使用当前的 celery/celerybeat 功能来实现这一点?

谢谢

0 投票
1 回答
1997 浏览

python - 在 Elastic Beanstalk(AWS) 中守护 Celerybeat

我正在尝试将 celerybeat 作为 Elastic beanstalk 中的守护进程运行。这是我的配置文件:

这个文件守护着 celery 和 celerybeat。芹菜工作正常。但 celerybeat 不是。我没有看到创建的 celerybeat.log 文件,我认为这表明 celerybeat 无法正常工作。

有什么想法吗?

如果需要,我会发布更多代码。感谢帮助