0
0
Flaskframework~20 mins

Polling as fallback in Flask - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Polling Mastery in Flask
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
Polling fallback behavior in Flask app

Consider a Flask app that uses polling as a fallback to update client data. What will the client see if the polling interval is set too high?

Flask
from flask import Flask, jsonify
import time

app = Flask(__name__)

last_update = time.time()
data = {'value': 0}

@app.route('/data')
def get_data():
    global last_update, data
    if time.time() - last_update > 5:
        data['value'] += 1
        last_update = time.time()
    return jsonify(data)
AThe client sees stale data for longer than 5 seconds due to high polling interval.
BThe client sees data updates immediately without delay.
CThe client sees updated data every 5 seconds as expected.
DThe client receives an error because polling is too frequent.
Attempts:
2 left
💡 Hint

Think about what happens if the client polls less often than the server updates.

📝 Syntax
intermediate
2:00remaining
Correct polling implementation in Flask route

Which Flask route code correctly implements a polling endpoint that returns an incrementing JSON counter?

A
from flask import Flask, jsonify
app = Flask(__name__)
data = {'count': 0}
@app.route('/poll')
def poll():
    data['count'] += 1
    return jsonify(data)
B
from flask import Flask, jsonify
app = Flask(__name__)
count = 0
@app.route('/poll')
def poll():
    count += 1
    return jsonify({'count': count})
C
from flask import Flask, jsonify
app = Flask(__name__)
count = 0
@app.route('/poll')
def poll():
    count = count + 1
    return jsonify({'count': count})
D
from flask import Flask, jsonify
app = Flask(__name__)
count = 0
@app.route('/poll')
def poll():
    global count
    count += 1
    return jsonify({'count': count})
Attempts:
2 left
💡 Hint

Remember to declare global variables inside functions when modifying them.

state_output
advanced
2:00remaining
Polling state update timing in Flask

Given this Flask polling endpoint, what is the value of data['value'] after 10 seconds if the client polls every 1 second?

Flask
from flask import Flask, jsonify
import time

app = Flask(__name__)

last_update = time.time()
data = {'value': 0}

@app.route('/data')
def get_data():
    global last_update, data
    if time.time() - last_update > 3:
        data['value'] += 1
        last_update = time.time()
    return jsonify(data)
Adata['value'] will be 3
Bdata['value'] will be 5
Cdata['value'] will be 0
Ddata['value'] will be 10
Attempts:
2 left
💡 Hint

Calculate how many 3-second intervals fit into 10 seconds.

🔧 Debug
advanced
2:00remaining
Debugging polling endpoint with stale data

A Flask polling endpoint returns stale data even though the server updates it every second. What is the most likely cause?

Flask
from flask import Flask, jsonify
import time

app = Flask(__name__)

last_update = time.time()
data = {'count': 0}

@app.route('/poll')
def poll():
    global last_update
    if time.time() - last_update > 1:
        data['count'] += 1
        last_update = time.time()
    return jsonify(data)
AThe Flask app is missing a route decorator.
BThe data dictionary is immutable and cannot be updated.
CThe variable last_update is not declared global inside the function, so it never updates.
DThe time module is not imported, causing errors.
Attempts:
2 left
💡 Hint

Check variable scope inside the function.

🧠 Conceptual
expert
2:00remaining
Why use polling as fallback in Flask apps?

In a Flask web app, why might polling be used as a fallback method for updating client data instead of WebSockets?

APolling is more efficient and uses less bandwidth than WebSockets.
BPolling works in all browsers and network setups, even when WebSockets are blocked or unsupported.
CPolling allows real-time two-way communication better than WebSockets.
DPolling requires less server resources because it keeps connections open.
Attempts:
2 left
💡 Hint

Consider browser and network compatibility.