title: How do language workers work in Azure Functions using Python?
body: <p>I’m working on an ETL project using Azure Functions where I extract data from blob storage, transform the data in Python and pandas, and load the data using pandas to_sql(). I’m trying to make this process more efficient by using asyncio and language workers.</p>
  <p>I’m a little confused because I was under the impression that asyncio works using one thread, but the Azure Functions documentation says you can use multiple language workers if you change your config and that even a method that doesn’t use the async keyword runs in a thread pool.</p>
  <p>Does that mean that if I don’t use the async keyword my methods will run concurrently using language workers? Do I have to use asyncio to utilize language workers?</p>
  <p>Also, the documentation says that Azure Functions can scale to up to 200 instances. How can I scale to that many instances if I’m only allowed a maximum of 10 language workers?</p>
  <p>Edit: Thanks Anatoli. Just to clarify, if I have a Timer Trigger with the following code:</p>
  <pre><code>import azure.functions as func
  from . import client_one_etl
  from . import client_two_etl
  
  def main(mytimer: func.TimerRequest) -&gt; None:
      client_one_etl.main()
      client_two_etl.main()
  </code></pre>
  <p>If I have increased the number of language workers, does that mean both <code>client_one_etl.main()</code> and <code>client_two_etl.main()</code> are automatically run in separate threads even without using <code>asyncio</code>? And if <code>client_two_etl.main()</code> needs <code>client_one_etl.main()</code> to finish before executing, I will need to use <code>async await</code> to prevent them from running concurrently?</p>
  <p>And for the separate instances, if <code>client_one_etl.main()</code> and <code>client_two_etl.main()</code> do not rely on each other does that mean I can execute them in one Azure Function app as separate .py scripts that run in their own VM? Is it possible to run multiple Timer Triggers (calling multiple <code>__init__.py</code> scripts each in their own VM for one Azure Function)? Then all scripts will need to complete within 10 minutes if I increase <code>functionTimeout</code> in the <code>host.json</code> file?</p>