问答交流

在AIStudio 3.0运行自定义Python模块成功,为什么提交为数据任务就失败?

由franklili创建,最终由franklili 被浏览 24 用户

# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
def bigquant_run(input_1, input_2, input_3):
    # 示例代码如下。在这里编写您的代码

    import dai
    import pandas as pd
    import requests
    import datetime
    
    last_date = input_1.read()
    bitfinex_symbols = pd.read_csv("/home/aiuser/work/userlib/data/BITFINEX_Symbols.csv",)
    
    dict1 = {"instrument": [], "date": [], "high": [], "low": [],
             "close": [], "open": [], "bid": [], "ask": [], "volume": []}
    #last_date = dai.query("SELECT date FROM BITFINEX_crypto_bar_1d WHERE date > '2024-04-26' ORDER BY date ").df()
    last_date_dt = last_date["date"].iloc[-1]
    last_date_str = datetime.datetime.strftime(last_date_dt, "%Y-%m-%d")
    print("last_date_str: ", last_date_str)
    today_dt = datetime.datetime.utcnow()
    delta_day = (today_dt - last_date_dt).days
    if delta_day > 0:
        for index, row in bitfinex_symbols.iterrows():
            if index :
                symbol = row["code"]
                print("symbol: ", symbol)
                if symbol:
                    url = "https://data.nasdaq.com/api/v3/datatables/QDL/BITFINEX?code=" + symbol + "&date.gt=" + last_date_str + "&api_key=XXXXXXXXXX"
                    #print("url: ", url)
                    response = requests.get(url)
                    if response:
                        response_json = response.json()
                        for item in response_json['datatable']["data"]:
                            dict1["instrument"].append(item[0]) 
                            dict1["date"].append(datetime.datetime.strptime(item[1], "%Y-%m-%d")) 
                            dict1["high"].append(item[2]) 
                            dict1["low"].append(item[3]) 
                            dict1["close"].append(item[4]) 
                            dict1["open"].append(item[5]) 
                            dict1["bid"].append(item[6]) 
                            dict1["ask"].append(item[7]) 
                            dict1["volume"].append(item[8]) 
        df = pd.DataFrame(dict1)
        df[dai.DEFAULT_PARTITION_FIELD] = df["date"].apply(lambda x: f"{x.year}")
        ds = dai.DataSource("BITFINEX_crypto_bar_1d")
        ds.insert_bdb(df)
    else:
        ds = dai.DataSource("BITFINEX_crypto_bar_1d")
        
    return dict(data_1=ds, data_2=None, data_3=None)

我在AIStudio 3.0运行自定义Python模块是成功的。


但是提交为数据任务后,昨晚运行失败。


为什么失败呀?

评论
  • 环境是一样的。看报错是哪里数据为空了。
  • 可以加一些打印,覆盖原任务后点击立即运行可以帮助定位。方便的话也可以把策略分享一下。
  • 看你代码用了本地文件和一些私密信息,这边无法复现,你可以在最后数据库那个地方把错误堆栈打印出来看下,参照:
  • import traceback
  • try:
  • df = pd.DataFrame(dict1)
  • df[dai.DEFAULT_PARTITION_FIELD] = df["date"].apply(lambda x: f"{x.year}")
  • ds = dai.DataSource("BITFINEX_crypto_bar_1d")
  • ds.insert_bdb(df)
  • except Exception:
  • traceback.print_exc()