MultiThreading in AWS lambda using Python3












0















I am trying to implement Multithreading in AWS lambda. This is a Sample code that defines the format of my original code which I am trying to execute in lambda.



import threading
import time

def this_will_await(arg,arg2):
print("Hello User")
print(arg,arg2)

def this_should_start_then_wait():
print("This starts")
timer = threading.Timer(3.0, this_will_await,["b","a"])
timer.start()
print("This should execute")

this_should_start_then_wait()


In my local Machine, this code is working fine. The output I am receiving is:



This starts
This should execute
.
.
.
Hello User
('b', 'a')


Those 3 . represents that it waited for 3 seconds to complete the execution.



Now when I execute the same thing in AWS lambda. I am only receiving



This starts
This should execute


I think it's not calling the this_will_await() function.










share|improve this question



























    0















    I am trying to implement Multithreading in AWS lambda. This is a Sample code that defines the format of my original code which I am trying to execute in lambda.



    import threading
    import time

    def this_will_await(arg,arg2):
    print("Hello User")
    print(arg,arg2)

    def this_should_start_then_wait():
    print("This starts")
    timer = threading.Timer(3.0, this_will_await,["b","a"])
    timer.start()
    print("This should execute")

    this_should_start_then_wait()


    In my local Machine, this code is working fine. The output I am receiving is:



    This starts
    This should execute
    .
    .
    .
    Hello User
    ('b', 'a')


    Those 3 . represents that it waited for 3 seconds to complete the execution.



    Now when I execute the same thing in AWS lambda. I am only receiving



    This starts
    This should execute


    I think it's not calling the this_will_await() function.










    share|improve this question

























      0












      0








      0








      I am trying to implement Multithreading in AWS lambda. This is a Sample code that defines the format of my original code which I am trying to execute in lambda.



      import threading
      import time

      def this_will_await(arg,arg2):
      print("Hello User")
      print(arg,arg2)

      def this_should_start_then_wait():
      print("This starts")
      timer = threading.Timer(3.0, this_will_await,["b","a"])
      timer.start()
      print("This should execute")

      this_should_start_then_wait()


      In my local Machine, this code is working fine. The output I am receiving is:



      This starts
      This should execute
      .
      .
      .
      Hello User
      ('b', 'a')


      Those 3 . represents that it waited for 3 seconds to complete the execution.



      Now when I execute the same thing in AWS lambda. I am only receiving



      This starts
      This should execute


      I think it's not calling the this_will_await() function.










      share|improve this question














      I am trying to implement Multithreading in AWS lambda. This is a Sample code that defines the format of my original code which I am trying to execute in lambda.



      import threading
      import time

      def this_will_await(arg,arg2):
      print("Hello User")
      print(arg,arg2)

      def this_should_start_then_wait():
      print("This starts")
      timer = threading.Timer(3.0, this_will_await,["b","a"])
      timer.start()
      print("This should execute")

      this_should_start_then_wait()


      In my local Machine, this code is working fine. The output I am receiving is:



      This starts
      This should execute
      .
      .
      .
      Hello User
      ('b', 'a')


      Those 3 . represents that it waited for 3 seconds to complete the execution.



      Now when I execute the same thing in AWS lambda. I am only receiving



      This starts
      This should execute


      I think it's not calling the this_will_await() function.







      python python-3.x multithreading amazon-web-services aws-lambda






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 5:49









      Sharvin ShahSharvin Shah

      7416




      7416
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Have you tried adding timer.join()? You'll need to join the Timer thread because otherwise the Lambda environment will kill off the thread when the parent thread finishes.



          This code in a Lambda function:



          import threading
          import time

          def this_will_await(arg,arg2):
          print("Hello User")
          print(arg,arg2)

          def this_should_start_then_wait():
          print("This starts")
          timer = threading.Timer(3.0, this_will_await,["b","a"])
          timer.start()
          timer.join()
          print("This should execute")

          this_should_start_then_wait()

          def lambda_handler(event, context):
          return this_should_start_then_wait()


          Produces this output:



          This starts
          Hello User
          b a
          This should execute





          share|improve this answer































            0














            I am not exactly sure if you can put delays while threading in lambda. I am also facing the same issue and found out this article:[https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/1






            share|improve this answer
























            • Yes, I am also trying to add delays using the scheduler.

              – Sharvin Shah
              Nov 20 '18 at 6:22











            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/3.0/"u003ecc by-sa 3.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%2f53386968%2fmultithreading-in-aws-lambda-using-python3%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Have you tried adding timer.join()? You'll need to join the Timer thread because otherwise the Lambda environment will kill off the thread when the parent thread finishes.



            This code in a Lambda function:



            import threading
            import time

            def this_will_await(arg,arg2):
            print("Hello User")
            print(arg,arg2)

            def this_should_start_then_wait():
            print("This starts")
            timer = threading.Timer(3.0, this_will_await,["b","a"])
            timer.start()
            timer.join()
            print("This should execute")

            this_should_start_then_wait()

            def lambda_handler(event, context):
            return this_should_start_then_wait()


            Produces this output:



            This starts
            Hello User
            b a
            This should execute





            share|improve this answer




























              0














              Have you tried adding timer.join()? You'll need to join the Timer thread because otherwise the Lambda environment will kill off the thread when the parent thread finishes.



              This code in a Lambda function:



              import threading
              import time

              def this_will_await(arg,arg2):
              print("Hello User")
              print(arg,arg2)

              def this_should_start_then_wait():
              print("This starts")
              timer = threading.Timer(3.0, this_will_await,["b","a"])
              timer.start()
              timer.join()
              print("This should execute")

              this_should_start_then_wait()

              def lambda_handler(event, context):
              return this_should_start_then_wait()


              Produces this output:



              This starts
              Hello User
              b a
              This should execute





              share|improve this answer


























                0












                0








                0







                Have you tried adding timer.join()? You'll need to join the Timer thread because otherwise the Lambda environment will kill off the thread when the parent thread finishes.



                This code in a Lambda function:



                import threading
                import time

                def this_will_await(arg,arg2):
                print("Hello User")
                print(arg,arg2)

                def this_should_start_then_wait():
                print("This starts")
                timer = threading.Timer(3.0, this_will_await,["b","a"])
                timer.start()
                timer.join()
                print("This should execute")

                this_should_start_then_wait()

                def lambda_handler(event, context):
                return this_should_start_then_wait()


                Produces this output:



                This starts
                Hello User
                b a
                This should execute





                share|improve this answer













                Have you tried adding timer.join()? You'll need to join the Timer thread because otherwise the Lambda environment will kill off the thread when the parent thread finishes.



                This code in a Lambda function:



                import threading
                import time

                def this_will_await(arg,arg2):
                print("Hello User")
                print(arg,arg2)

                def this_should_start_then_wait():
                print("This starts")
                timer = threading.Timer(3.0, this_will_await,["b","a"])
                timer.start()
                timer.join()
                print("This should execute")

                this_should_start_then_wait()

                def lambda_handler(event, context):
                return this_should_start_then_wait()


                Produces this output:



                This starts
                Hello User
                b a
                This should execute






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 20 '18 at 6:12









                Gabe HollombeGabe Hollombe

                5,66333140




                5,66333140

























                    0














                    I am not exactly sure if you can put delays while threading in lambda. I am also facing the same issue and found out this article:[https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/1






                    share|improve this answer
























                    • Yes, I am also trying to add delays using the scheduler.

                      – Sharvin Shah
                      Nov 20 '18 at 6:22
















                    0














                    I am not exactly sure if you can put delays while threading in lambda. I am also facing the same issue and found out this article:[https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/1






                    share|improve this answer
























                    • Yes, I am also trying to add delays using the scheduler.

                      – Sharvin Shah
                      Nov 20 '18 at 6:22














                    0












                    0








                    0







                    I am not exactly sure if you can put delays while threading in lambda. I am also facing the same issue and found out this article:[https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/1






                    share|improve this answer













                    I am not exactly sure if you can put delays while threading in lambda. I am also facing the same issue and found out this article:[https://aws.amazon.com/blogs/compute/parallel-processing-in-python-with-aws-lambda/1







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 20 '18 at 6:21









                    Jeet BhattachariyaJeet Bhattachariya

                    11




                    11













                    • Yes, I am also trying to add delays using the scheduler.

                      – Sharvin Shah
                      Nov 20 '18 at 6:22



















                    • Yes, I am also trying to add delays using the scheduler.

                      – Sharvin Shah
                      Nov 20 '18 at 6:22

















                    Yes, I am also trying to add delays using the scheduler.

                    – Sharvin Shah
                    Nov 20 '18 at 6:22





                    Yes, I am also trying to add delays using the scheduler.

                    – Sharvin Shah
                    Nov 20 '18 at 6:22


















                    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%2f53386968%2fmultithreading-in-aws-lambda-using-python3%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

                    MongoDB - Not Authorized To Execute Command

                    in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

                    Npm cannot find a required file even through it is in the searched directory