I'm trying to print to console before and after processing that takes a while in a Django management command, like this:

```
import requests
import xmltodict

from django.core.management.base import BaseCommand

def get_all_routes():
    url = 'http://busopen.jeju.go.kr/OpenAPI/service/bis/Bus'

    r = requests.get(url)
    data = xmltodict.parse(r.content)

    return data['response']['body']['items']['item']

class Command(BaseCommand):

    help = 'Updates the database via Bus Info API'

    def handle(self, *args, **options):
        self.stdout.write('Saving routes ... ', ending='')
        for route in get_all_routes():
            route_obj = Route(
                route_type=route['routeTp'], route_id=route['routeId'], route_number=route['routeNum'])
            route_obj.save()
        self.stdout.write('done.')

```

In the above code, `Saving routes ...` is expected to print **before** the loop begins, and `done.` right next to it when the loop completes so that it looks like `Saving routes ... done.` in the end.

However, the former doesn't print until the loop completes, when both strings finally print at the same time, which is not what I expected.

I found [this question](https://stackoverflow.com/q/30957273), where the answer suggests flushing the output i.e. `self.stdout.flush()`, so I added that to my code:

```
    def handle(self, *args, **options):
        self.stdout.write('Saving routes ... ', ending='')
        self.stdout.flush()
        for route in get_all_routes():
            route_obj = Route(
                route_type=route['routeTp'], route_id=route['routeId'], route_number=route['routeNum'])
            route_obj.save()
        self.stdout.write('done.')

```

Still, the result remains unchanged.

What could have I done wrong?