code: def main():
      parser = argparse.ArgumentParser(
          description="Generates HTTP workloads with Ray."
      )
  
      parser.add_argument(
          "--num_tasks",
          type=int,
          required=True,
          help="Number of tasks.",
      )
      parser.add_argument(
          "--num_queries_per_task",
          type=int,
          required=True,
          help="Number of queries per task.",
      )
      parser.add_argument(
          "--num_words_per_query",
          type=int,
          required=True,
          help="Number of words per query",
      )
  
      args = parser.parse_args()
  
      # Run the serve, run the client, then showdown serve.
      llm = ReverseAndDupEachWord.bind(2)
      app = Textbot.bind(llm)
  
      serve.run(app)
  
      objs = [
          make_http_query.remote(
              args.num_words_per_query, args.num_queries_per_task
          )
          for _ in range(args.num_tasks)
      ]
      ray.get(objs)
  
      serve.shutdown()
  
file_path: ray/python/ray/tests/chaos/streaming_llm.py
imports: import asyncio
  import logging
  import requests
  import argparse
  from fastapi import FastAPI
  from starlette.responses import StreamingResponse
  import ray
  from ray import serve
label_desc: Use image node_id 2 for calling a global function with example usage: main() without return types