@app.route("<STR_LIT>")<EOL>def drip():
args = CaseInsensitiveDict(request.args.items())<EOL>duration = float(args.get("<STR_LIT>", <NUM_LIT:2>))<EOL>numbytes = min(int(args.get("<STR_LIT>", <NUM_LIT:10>)), (<NUM_LIT:10> * <NUM_LIT> * <NUM_LIT>))  <EOL>code = int(args.get("<STR_LIT:code>", <NUM_LIT:200>))<EOL>if numbytes <= <NUM_LIT:0>:<EOL><INDENT>response = Response("<STR_LIT>", status=<NUM_LIT>)<EOL>return response<EOL><DEDENT>delay = float(args.get("<STR_LIT>", <NUM_LIT:0>))<EOL>if delay > <NUM_LIT:0>:<EOL><INDENT>time.sleep(delay)<EOL><DEDENT>pause = duration / numbytes<EOL>def generate_bytes():<EOL><INDENT>for i in xrange(numbytes):<EOL><INDENT>yield b"<STR_LIT:*>"<EOL>time.sleep(pause)<EOL><DEDENT><DEDENT>response = Response(<EOL>generate_bytes(),<EOL>headers={<EOL>"<STR_LIT:Content-Type>": "<STR_LIT>",<EOL>"<STR_LIT>": str(numbytes),<EOL>},<EOL>)<EOL>response.status_code = code<EOL>return response<EOL>
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.