python - 如何在 celery 中定期运行任务?

标签 python celery periodic-task

我想通过 celery 定期任务每 10 秒运行一个任务。这是我在 celery.py 中的代码:

    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery 

     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoCelery1.settings')
     app = Celery('DjangoCelery1')
     app.config_from_object('django.conf:settings', namespace='CELERY')
     app.autodiscover_tasks()   

     @app.on_after_finalize.connect
     def setup_periodic_tasks(sender, **kwargs):
             sender.add_periodic_task(10, test.s('hello'), name='add every 10')

    @app.task
    def test(arg):
        print(arg)
        with open("test.txt", "w") as myfile:
             myfile.write(arg)

然后我通过以下命令运行它:

celery -A DjangoCelery1 beat -l info

它似乎运行并在终端中,我给出以下消息:

celery beat v4.4.2 (cliffs) is starting.
__    -    ... __   -        _
LocalTime -> 2020-04-26 15:56:48
Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 minutes (300s)
[2020-04-26 15:56:48,483: INFO/MainProcess] beat: Starting...
[2020-04-26 15:56:48,499: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:56:53,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:56:58,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:03,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:08,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)
[2020-04-26 15:57:13,492: INFO/MainProcess] Scheduler: Sending due task add every 10 (DjangoCelery1.celery.test)

但是,任务未运行,并且没有打印消息和创建的文本文件。 有什么问题吗?

最佳答案

这是节拍过程 - 现在您需要运行另一个过程:

celery -A 任务 worker ...

因此工作人员可以使用您通过节拍触发的任务并处理它们。

关于python - 如何在 celery 中定期运行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444093/

相关文章:

javascript - OpenCV在python和javascript之间调整了大不相同的结果

python - 是否可以在 Python 中创建抽象类?

ios - iOS 上的周期性后台任务

java - 如何安排周期性任务,但在满足条件时停止并返回结果(Java)

python - 在 PySpark Dataframe 中结合旋转和 groupby 聚合

python - 想法如何使用python测量骨架的长度

python - 在 Celery 中控制和查询任务

python - 如何在python中用 celery 清除特定队列的所有任务?

python - Celery - RabbitMQ 中的一条消息可以同时被两个或多个工作人员使用吗?

amazon-web-services - Aws Elasticbeanstalk cron.yaml 工作线程问题