zoukankan      html  css  js  c++  java
  • djangoapscheduler 在 uwsgi 环境下

    问题现象

    uwsgi 会根据配置启用复数个进程的django

    而 APScheduler 也会依附于 django 的启动同时启动

    因此在每个 APScheduler 的定时任务也会是复数个同时执行

    问题处理

    占用一个未用端口, 从而保证其他django启动的时候去检测

    如果已被占用则不在启动, 从而实现用端口锁,

    保证只会启用一个 APScheduler 进程

    try:
        # 利用一个占用端口来检测是否已经启动, 如已占用则说明已启动
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.bind(("127.0.0.1", 44444))
    except socket.error:
        print("!!!scheduler started, DO NOTHING")
    else:
        try:
            if settings.SYNC_TASK_TOOGLE == 'true':
                print('scheduler running !!!')
                scheduler.start()
            else:
                print('No need scheduler')
        except Exception as e:
            # 一般是没生成表,就启动当前程序就会报错
            print(e)

    启用后。 其他进程在启动时将不会重复开启 APScheduler 

    资料参考

    https://github.com/viniciuschiele/flask-apscheduler/issues/79 

    本文来自博客园,作者:羊驼之歌,转载请注明原文链接:https://www.cnblogs.com/shijieli/p/15528080.html

  • 相关阅读:
    java 求 1!+2!+3!+....+10!的和为
    Java 循环控制语句
    java for 循环 九九乘法表
    Java for 循环
    Java while 和 do...while
    Java if语句
    Java switch 语句
    java a++ 和 ++a 理解
    Java 自动转换和强制转换
    二叉树遍历
  • 原文地址:https://www.cnblogs.com/shijieli/p/15528080.html
Copyright © 2011-2022 走看看