code: def drip():
      
      args = CaseInsensitiveDict(request.args.items())
      duration = float(args.get("duration", 2))
      numbytes = min(int(args.get("numbytes", 10)), (10 * 1024 * 1024))  # set 10MB limit
      code = int(args.get("code", 200))
  
      if numbytes <= 0:
          response = Response("number of bytes must be positive", status=400)
          return response
  
      delay = float(args.get("delay", 0))
      if delay > 0:
          time.sleep(delay)
  
      pause = duration / numbytes
  
      def generate_bytes():
          for i in xrange(numbytes):
              yield b"*"
              time.sleep(pause)
  
      response = Response(
          generate_bytes(),
          headers={
              "Content-Type": "application/octet-stream",
              "Content-Length": str(numbytes),
          },
      )
  
      response.status_code = code
  
      return response
docs: Drips data over a duration after an optional initial delay.
      ---
      tags:
        - Dynamic data
      parameters:
        - in: query
          name: duration
          type: number
          description: The amount of time (in seconds) over which to drip each byte
          default: 2
          required: false
        - in: query
          name: numbytes
          type: integer
          description: The number of bytes to respond with
          default: 10
          required: false
        - in: query
          name: code
          type: integer
          description: The response code that will be returned
          default: 200
          required: false
        - in: query
          name: delay
          type: number
          description: The amount of time (in seconds) to delay before responding
          default: 2
          required: false
      produces:
        - application/octet-stream
      responses:
        200:
          description: A dripped response.