私のdjangoアプリには、実行に時間がかかる可能性のあるレポート(csvダウンロード)があります。ユーザーがレポートを実行すると、「処理」ページにリダイレクトされます。このページでは、javascript関数がサーバーを毎秒チェックして、csvが作成されているかどうかを確認します(ファイル名はHttpResponseオブジェクトに含まれています)。
私が探しているのは、csvを作成しているスレッドを識別する方法です。estimated_time_to_completionそうすれば、スレッドに属性を追加して、この情報を保留ページに含めることができます。実際、(ロック解除された)csvの存在を確認するのをやめることができました。スレッドが終了したかどうかを尋ねることができました。
私のcsv作成スレッドは次のようになります-
class CsvBuilder(threading.Thread):
    def __init__(self, file_name, parameters)
        self.file_name = file_name
        self.parameters = parameters
        threading.Thread.__init__(self)
    def run():
        # ...
        file = open(self.file_name, 'wb')
        writer = csv.writer(file)
        for patient in patients:
            writer.writerow('some data')
            self.time_remaining = # a timedelta object
        file.close()
そして、私のdjangoリクエストは次のようになります-
def create_csv(request):
    '''
    Standard django view to create a csv
    '''
    # get filename and parameters from request
    thread = CsvBuilder (file_name, parameters)
    return render_to_response('processing.html', {"thread_id": thread.thread_id})
def check_progress(request):
    '''
    An ajax call to check the progress on a report
    '''
    thread_id = requst.GET['thread_id']
    # find the thread 
    return HttpResponse(thread.time_remaining)
これは可能ですか?それとも私はこれを別の方法で行うべきですか?