python - Celerybeat不运行周期性任务

标签 python django celery django-celery

我有任务

class BasecrmSync(PeriodicTask):
run_every = schedules.crontab(minute='*/1')

def run(self, **kwargs):
    bc = basecrm.Client(access_token=settings.BASECRM_AUTH_TOKEN)
    sync = basecrm.Sync(client=bc, device_uuid=settings.BASECRM_DEVICE_UUID)
    sync.fetch(synchronize)

以及带有数据库代理的 celery 配置

CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
BROKER_URL = 'django://'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

我运行

celery -A renuval_api worker -B --loglevel=debug

但它不运行任务... 我也尝试过运行

python3 manage.py celery worker --loglevel=DEBUG  -E -B -c 1 --settings=renuval_api.settings.local

但它使用 amqp 传输,我不明白为什么。

最佳答案

我为beat 函数本身运行一个单独的进程。否则我永远无法触发定期任务。当然,我的想法可能完全错误,但它对我有用,并且已经持续了一段时间了。

例如,我有 celery Worker 及其应用程序在一个进程中运行:

celery worker --app=celeryapp:app -l info --logfile="/var/log/celery/worker.log"

我的节拍在其自己的进程中指向同一个应用程序:

celery --app=celeryapp:app beat

它们指向相同的应用程序和设置,并触发工作人员拿起并执行的任务。该应用程序与我的 Django 应用程序位于同一代码树中,但进程未在 Django 中运行。也许你可以运行类似的东西:

python3 manage.py celery beat --loglevel=DEBUG  -E -B -c 1 --settings=renuval_api.settings.local

希望对您有所帮助。

关于python - Celerybeat不运行周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630804/

相关文章:

python - Splinter 浏览器自动化选择选项

python - 识别字符串中的符号

Python:比较具有不同结构的两个目录并列出新文件

python - Django/python 和 Apache Solr : pysolr or solrpy?

python - 使用 pip 安装 MySQL-python 时出错

Django 形成动态让作者作为模型表单中的登录用户

基于 Django 类的 View - 过滤查询集并保存它

python - celery 监控不适用于数据库代理

python - celery worker - 连接已关闭错误

python - 此 Web 应用程序是否需要任务队列?