python flask scheduling: all workers start scheduler taskFind all files in a directory with extension .txt in PythonRemove all whitespace in a string in PythonHow can I get the named parameters from a URL using Flask?How to run recurring task in the Python Flask framework?Celery restart loss scheduled tasksStarting and stopping flask on demandJob is not performed by APScheduler's BackgroundSchedulerRunning Flask port 80 on Elastic-Beanstalk Worker

Are there types of animals that can't make the trip to space? (physiologically)

Garage door sticks on a bolt

How to identify whether a publisher is genuine or not?

Looking for circuit board material that can be dissolved

Disable all sound permanently

Could the Queen overturn the UK Supreme Court ruling regarding prorogation of Parliament?

Is there a way to remove Smite from a weapon?

Why does `FindFit` fail so badly in this simple case?

Principled construction of the quaternions

Caro-Kann c4-c5 push

How to level a picture frame hung on a single nail?

Drawing Maps; flat distortion

IEEE 754 square root with Newton-Raphson

What makes a character irredeemable?

Does Bank Manager's discretion still exist in Mortgage Lending

Should I be an author on another PhD student's paper if I went to their meetings and gave advice?

What are one's options when facing religious discrimination at the airport?

Would a horse be sufficient buffer to prevent injury when falling from a great height?

Is "weekend warrior" derogatory?

Lighthouse Alternatives

What is the score of my Scopa hand?

Booting Ubuntu from USB drive on MSI motherboard -- EVERYTHING fails

What is the meaning of first flight and introduction in aircraft production?

Can an untrusted VPN client monitor my network activity?



python flask scheduling: all workers start scheduler task


Find all files in a directory with extension .txt in PythonRemove all whitespace in a string in PythonHow can I get the named parameters from a URL using Flask?How to run recurring task in the Python Flask framework?Celery restart loss scheduled tasksStarting and stopping flask on demandJob is not performed by APScheduler's BackgroundSchedulerRunning Flask port 80 on Elastic-Beanstalk Worker






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;









0















I use scheduled tasks inside a flask application:



 import time
import atexit

from apscheduler.schedulers.background import BackgroundScheduler


def intervall():
with app.app_context():
call_function_to_do()

scheduler = BackgroundScheduler()
scheduler.add_job(func=intervall, trigger="interval", seconds=5)
scheduler.start()

# Shut down the scheduler when exiting the app
atexit.register(lambda: scheduler.shutdown())


My problem is that all gunicorn workers are starting the scheduler task. In this case checking for a timeout situation and sending an email to a user.



Does anybody have an idea how to only have one worker excute call_function_to_do() ?










share|improve this question
































    0















    I use scheduled tasks inside a flask application:



     import time
    import atexit

    from apscheduler.schedulers.background import BackgroundScheduler


    def intervall():
    with app.app_context():
    call_function_to_do()

    scheduler = BackgroundScheduler()
    scheduler.add_job(func=intervall, trigger="interval", seconds=5)
    scheduler.start()

    # Shut down the scheduler when exiting the app
    atexit.register(lambda: scheduler.shutdown())


    My problem is that all gunicorn workers are starting the scheduler task. In this case checking for a timeout situation and sending an email to a user.



    Does anybody have an idea how to only have one worker excute call_function_to_do() ?










    share|improve this question




























      0












      0








      0








      I use scheduled tasks inside a flask application:



       import time
      import atexit

      from apscheduler.schedulers.background import BackgroundScheduler


      def intervall():
      with app.app_context():
      call_function_to_do()

      scheduler = BackgroundScheduler()
      scheduler.add_job(func=intervall, trigger="interval", seconds=5)
      scheduler.start()

      # Shut down the scheduler when exiting the app
      atexit.register(lambda: scheduler.shutdown())


      My problem is that all gunicorn workers are starting the scheduler task. In this case checking for a timeout situation and sending an email to a user.



      Does anybody have an idea how to only have one worker excute call_function_to_do() ?










      share|improve this question
















      I use scheduled tasks inside a flask application:



       import time
      import atexit

      from apscheduler.schedulers.background import BackgroundScheduler


      def intervall():
      with app.app_context():
      call_function_to_do()

      scheduler = BackgroundScheduler()
      scheduler.add_job(func=intervall, trigger="interval", seconds=5)
      scheduler.start()

      # Shut down the scheduler when exiting the app
      atexit.register(lambda: scheduler.shutdown())


      My problem is that all gunicorn workers are starting the scheduler task. In this case checking for a timeout situation and sending an email to a user.



      Does anybody have an idea how to only have one worker excute call_function_to_do() ?







      python flask apscheduler






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 28 at 21:08







      caliph

















      asked Mar 28 at 20:54









      caliphcaliph

      4856 silver badges23 bronze badges




      4856 silver badges23 bronze badges

























          1 Answer
          1






          active

          oldest

          votes


















          0
















          There are basically two options. One of them outlined in the FAQ is to separate scheduler into separate process and communicate with the process using some remote access protocol (e.g. using RPyC). The other method is to start the scheduler in Flask app, but ensure that only one such instance is run. You can use some kind of locking mechanism, e.g. RedLock.






          share|improve this answer


























            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );














            draft saved

            draft discarded
















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55406707%2fpython-flask-scheduling-all-workers-start-scheduler-task%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0
















            There are basically two options. One of them outlined in the FAQ is to separate scheduler into separate process and communicate with the process using some remote access protocol (e.g. using RPyC). The other method is to start the scheduler in Flask app, but ensure that only one such instance is run. You can use some kind of locking mechanism, e.g. RedLock.






            share|improve this answer





























              0
















              There are basically two options. One of them outlined in the FAQ is to separate scheduler into separate process and communicate with the process using some remote access protocol (e.g. using RPyC). The other method is to start the scheduler in Flask app, but ensure that only one such instance is run. You can use some kind of locking mechanism, e.g. RedLock.






              share|improve this answer



























                0














                0










                0









                There are basically two options. One of them outlined in the FAQ is to separate scheduler into separate process and communicate with the process using some remote access protocol (e.g. using RPyC). The other method is to start the scheduler in Flask app, but ensure that only one such instance is run. You can use some kind of locking mechanism, e.g. RedLock.






                share|improve this answer













                There are basically two options. One of them outlined in the FAQ is to separate scheduler into separate process and communicate with the process using some remote access protocol (e.g. using RPyC). The other method is to start the scheduler in Flask app, but ensure that only one such instance is run. You can use some kind of locking mechanism, e.g. RedLock.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 29 at 19:50









                Tomáš LinhartTomáš Linhart

                5,7971 gold badge11 silver badges24 bronze badges




                5,7971 gold badge11 silver badges24 bronze badges































                    draft saved

                    draft discarded















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55406707%2fpython-flask-scheduling-all-workers-start-scheduler-task%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

                    Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

                    Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript