Passing args, kwargs, to run_in_executor











up vote
1
down vote

favorite












I am trying to pass arguments to run_in_executor like so:



    loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})


However, I get the following error:




run_in_executor() got an unexpected keyword argument 'data'




Is there a generic way to pass args to this function?










share|improve this question






















  • what is the definition of update_contacts?
    – Netwave
    Nov 19 at 4:35















up vote
1
down vote

favorite












I am trying to pass arguments to run_in_executor like so:



    loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})


However, I get the following error:




run_in_executor() got an unexpected keyword argument 'data'




Is there a generic way to pass args to this function?










share|improve this question






















  • what is the definition of update_contacts?
    – Netwave
    Nov 19 at 4:35













up vote
1
down vote

favorite









up vote
1
down vote

favorite











I am trying to pass arguments to run_in_executor like so:



    loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})


However, I get the following error:




run_in_executor() got an unexpected keyword argument 'data'




Is there a generic way to pass args to this function?










share|improve this question













I am trying to pass arguments to run_in_executor like so:



    loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})


However, I get the following error:




run_in_executor() got an unexpected keyword argument 'data'




Is there a generic way to pass args to this function?







python python-3.x






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 19 at 4:12









David L

35010




35010












  • what is the definition of update_contacts?
    – Netwave
    Nov 19 at 4:35


















  • what is the definition of update_contacts?
    – Netwave
    Nov 19 at 4:35
















what is the definition of update_contacts?
– Netwave
Nov 19 at 4:35




what is the definition of update_contacts?
– Netwave
Nov 19 at 4:35












2 Answers
2






active

oldest

votes

















up vote
1
down vote



accepted










Use functools.partial; it's a standard way to do such things, and it's specifically recommended in the docs for loop.run_in_executor, as well as more generally in the Event Loop docs.



Here's how it might look for you:



import functools  # at the top with the other imports

loop.run_in_executor(None, functools.partial(update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
}))


You could also do from functools import partial, if you like.






share|improve this answer




























    up vote
    0
    down vote













    You asked for a "generic way"; the most generic answer is that you create a function for the purpose. If the data you want to provide is local to the caller, you create that function inside the caller, perhaps as a lambda:



    loop.run_in_executor(None,lambda: update_contacts(data={
    'email': email,
    'access_token': g.tokens['access_token']
    })


    As given, this is not much different from the functools.partial answer, and (as the documentation says) it might reduce the utility of debug output, but it lets you do things like compute the data values on the executor and act on the return value from update_contacts.






    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',
      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%2f53368203%2fpassing-args-kwargs-to-run-in-executor%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








      up vote
      1
      down vote



      accepted










      Use functools.partial; it's a standard way to do such things, and it's specifically recommended in the docs for loop.run_in_executor, as well as more generally in the Event Loop docs.



      Here's how it might look for you:



      import functools  # at the top with the other imports

      loop.run_in_executor(None, functools.partial(update_contacts, data={
      'email': email,
      'access_token': g.tokens['access_token']
      }))


      You could also do from functools import partial, if you like.






      share|improve this answer

























        up vote
        1
        down vote



        accepted










        Use functools.partial; it's a standard way to do such things, and it's specifically recommended in the docs for loop.run_in_executor, as well as more generally in the Event Loop docs.



        Here's how it might look for you:



        import functools  # at the top with the other imports

        loop.run_in_executor(None, functools.partial(update_contacts, data={
        'email': email,
        'access_token': g.tokens['access_token']
        }))


        You could also do from functools import partial, if you like.






        share|improve this answer























          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          Use functools.partial; it's a standard way to do such things, and it's specifically recommended in the docs for loop.run_in_executor, as well as more generally in the Event Loop docs.



          Here's how it might look for you:



          import functools  # at the top with the other imports

          loop.run_in_executor(None, functools.partial(update_contacts, data={
          'email': email,
          'access_token': g.tokens['access_token']
          }))


          You could also do from functools import partial, if you like.






          share|improve this answer












          Use functools.partial; it's a standard way to do such things, and it's specifically recommended in the docs for loop.run_in_executor, as well as more generally in the Event Loop docs.



          Here's how it might look for you:



          import functools  # at the top with the other imports

          loop.run_in_executor(None, functools.partial(update_contacts, data={
          'email': email,
          'access_token': g.tokens['access_token']
          }))


          You could also do from functools import partial, if you like.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 19 at 6:16









          Cyphase

          8,03011627




          8,03011627
























              up vote
              0
              down vote













              You asked for a "generic way"; the most generic answer is that you create a function for the purpose. If the data you want to provide is local to the caller, you create that function inside the caller, perhaps as a lambda:



              loop.run_in_executor(None,lambda: update_contacts(data={
              'email': email,
              'access_token': g.tokens['access_token']
              })


              As given, this is not much different from the functools.partial answer, and (as the documentation says) it might reduce the utility of debug output, but it lets you do things like compute the data values on the executor and act on the return value from update_contacts.






              share|improve this answer

























                up vote
                0
                down vote













                You asked for a "generic way"; the most generic answer is that you create a function for the purpose. If the data you want to provide is local to the caller, you create that function inside the caller, perhaps as a lambda:



                loop.run_in_executor(None,lambda: update_contacts(data={
                'email': email,
                'access_token': g.tokens['access_token']
                })


                As given, this is not much different from the functools.partial answer, and (as the documentation says) it might reduce the utility of debug output, but it lets you do things like compute the data values on the executor and act on the return value from update_contacts.






                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  You asked for a "generic way"; the most generic answer is that you create a function for the purpose. If the data you want to provide is local to the caller, you create that function inside the caller, perhaps as a lambda:



                  loop.run_in_executor(None,lambda: update_contacts(data={
                  'email': email,
                  'access_token': g.tokens['access_token']
                  })


                  As given, this is not much different from the functools.partial answer, and (as the documentation says) it might reduce the utility of debug output, but it lets you do things like compute the data values on the executor and act on the return value from update_contacts.






                  share|improve this answer












                  You asked for a "generic way"; the most generic answer is that you create a function for the purpose. If the data you want to provide is local to the caller, you create that function inside the caller, perhaps as a lambda:



                  loop.run_in_executor(None,lambda: update_contacts(data={
                  'email': email,
                  'access_token': g.tokens['access_token']
                  })


                  As given, this is not much different from the functools.partial answer, and (as the documentation says) it might reduce the utility of debug output, but it lets you do things like compute the data values on the executor and act on the return value from update_contacts.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 19 at 6:54









                  Davis Herring

                  7,2891634




                  7,2891634






























                       

                      draft saved


                      draft discarded



















































                       


                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53368203%2fpassing-args-kwargs-to-run-in-executor%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

                      Costa Masnaga

                      Fotorealismo

                      Sidney Franklin