首页 文章

安排常规活动:Cron / Cron替代品(包括Celery)

提问于
浏览
9

我感兴趣的是定期按时间间隔运行某些操作 . 显然,这是cron的任务,对吧?

不幸的是,互联网似乎在那里存在一些分歧 .

让我详细说明一下我的设置 . 首先,我的开发环境是在Windows中,而我的 生产环境 环境是在Webfaction(Linux)上托管的 . Windows上没有真正的cron,对吧?另外,我使用Django!还有什么建议Django?

Celery当然!不幸的是,设置Celery对我来说或多或少是个噩梦 - 请参阅Error message 'No handlers could be found for logger “multiprocessing”' using Celery . 而这只是我遇到问题的唯一问题之一 .

别误会我的意思,芹菜似乎真的很酷 . 不幸的是,似乎缺乏支持,并且在其首选后端内置了一些奇怪的限制,RabbitMQ . 不幸的是,无论程序有多酷,如果它没有工作!

这就是我希望你们所有人都能进来的地方 . 我想了解cron或者cron-equivalent,它们可以在Windows和Linux环境中以类似方式(最好是相同的)进行设置 .

(我现在已经和Celery挣扎了大约两个星期,不幸的是我认为现在是时候抛弃它并放弃它,至少目前是这样 . )

4 回答

  • 0

    一种简单的非Celery方法可以创建Django custom management commands来执行异步或计划任务 .

    然后,在Windows上,使用 at 命令来安排这些任务 . 在Linux上,您使用 cron .

    如果可以用于开发环境,我也强烈建议放弃Windows . 在Linux甚至Mac OSX上你的生活会好得多 . 例如,使用Ubuntu重新使用备用或旧机器,或者在Windows机器上的VM中运行Ubuntu .

  • 0

    我有同样的问题,并试图用芹菜(太复杂)或cron(应用程序外部)解决它,最终找到Advanced Python Scheduler . 只是刚刚开始使用它,但它似乎相当成熟和稳定,具有良好的文档,并将采取多种调度格式(例如cron风格) .

    documentation开始,以特定间隔运行函数 .

    from apscheduler.scheduler import Scheduler
    sched = Scheduler()
    sched.start()
    def hello_world():
        print "hello world"
    sched.add_interval_job(hello_world,seconds=10)
    

    这是非阻塞的,我只需从我的 urls.py 导入模块就可以运行相同的东西 . 希望这可以帮助 .

  • 15

    https://github.com/andybak/django-cron

    由单个cron任务触发,但所有调度和配置都在Python中完成 .

  • 11

    Django Chronograph是一个很好的选择 . 您只需要设置一个cron,然后在django admin中执行所有操作 . 您可以从django管理中安排任务/命令 .

相关问题