| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | from concurrent.futures import ThreadPoolExecutorimport requestsimport datetimeimport jsonimport pandas as pdimport uuidimport tracebackfrom sqlalchemy import create_enginefrom urllib import parsefrom urllib.parse import urlencodeif __name__ == '__main__':    online_db_con_str = "mysql+pymysql://%s:%s@%s:%d/%s" % ("readonly", parse.quote_plus("hcst@2021"), "139.186.27.96", 3390, "jeecg-boot")    online_engine = create_engine(online_db_con_str, connect_args={'charset': 'utf8'})    test_db_con_str = "mysql+pymysql://%s:%s@%s:%d/%s" % ("hcst", parse.quote_plus("hcst@2020"), "139.186.165.84", 3306, "db_ai_word")    test_engine = create_engine(test_db_con_str, connect_args={'charset': 'utf8'})    task_submit_url = 'http://139.186.165.84:31012/asr/task/submit'    task_result_url = 'http://139.186.165.84:31012/asr/task/result'    # 1、获取素材信息    get_material_info_sql = """    select t2.signature, t2.url    from    (select signature, account_id from ctop_kuaishou_report_daily_material            where account_id in (select account_id from ctop_user_allocation where project_id = 458)           group by signature           having sum(activation) >= 50) t1    left join    ctop_kuaishou_video_get t2    on t1.signature = t2.signature and t1.account_id = t2.account_id    where t2.signature is not null    """    material_info_df = pd.read_sql(get_material_info_sql, online_engine)    material_info_df = material_info_df[(~material_info_df.signature.isnull()) & (~material_info_df.url.isnull())]    # 2 获取已经提交的任务    submit_task_sql = """select task_id, md5 signature from tb_asr_result """    submit_task_df = pd.read_sql(submit_task_sql, test_engine)    # 3 需要提交的任务    to_submit_task_df = material_info_df[~material_info_df.signature.isin(submit_task_df.signature.values)]    # 4 任务提交    for index, row in to_submit_task_df.iterrows():        material_md5 = row['signature']        material_url = row['url']        print(material_md5, material_url)        request_data = {"md5": material_md5, "url": material_url}        # 表单形式的入参,不是 json 块入参,请求方式不一样        request_full_path = task_submit_url + '?' + urlencode(request_data)        request = requests.post(request_full_path)        try:            result = json.loads(request.text)            print(result)        except:            print("error", request.text)    # 5、任务获取    get_result_sql = """select task_id from tb_asr_result where  word_text is null"""    get_result_df = pd.read_sql(get_result_sql, test_engine)    for index, row in get_result_df.iterrows():        task_id = row['task_id']        request_data = {'task_id': task_id}        request_full_path = task_result_url + '?' + urlencode(request_data)        request = requests.post(request_full_path)        try:            result = json.loads(request.text)            print(task_id, result['status'])        except:            print("error", task_id, request.text)
 |