aws_secret_access_key = os.environ['AWS_SECRET_KEY']
    else:
        #for compatible reason
        aws_secret_access_key = parser.get('AWS_credentials', 'aws_secret_access_key')

    order_queue_name = parser.get('SQS_settings', 'order_queue_name') 
    result_queue_name = parser.get('SQS_settings', 'result_queue_name') 
    queue_region = parser.get('SQS_settings', 'queue_region')    
    max_cook_count = parser.get('General_config', 'max_cook_count')    

    #
    # fork workers
    #
    sqs = SQSUtils(order_queue_name, queue_region, aws_access_key_id, aws_secret_access_key, logger=None)
    #print "should have " + str(sqs.get_count())
    if sqs.get_count() > 0:
        thread_list = list()
        while sqs.get_count() > 0:
            if threading.active_count() < int(max_cook_count) + 1:
                thread = threading.Thread(target=main, args=(len(thread_list), )) 
                thread_list.append(thread)
                thread.start()
            else:
                #FIXME: two threads get same task
                time.sleep(random.randrange(1, int(max_cook_count) + 1) * 10)
                sqs = SQSUtils(order_queue_name, queue_region, aws_access_key_id, aws_secret_access_key, logger=None)
        for thread in thread_list:
            thread.join()
    else:
        print "No request in Order Queue"