python定时问题


def sell_logic(ContextInfo):
    position_info = get_trade_detail_data('', 'stock', 'position')
    for i in position_info:
        daimaheshuliang=i.m_strInstrumentID, i.m_nVolume
        print(daimaheshuliang)
def init(ContextInfo):
    schedule.every().day.at("16:39:10").do(sell_logic)

最后一行应该如何写?我是想按照时间打印一次
schedule.every().day.at("16:39:10").do(sell_logic(Contextinfo))执行后打印但没按时间且报错
schedule.every().day.at("16:39:10").do(sell_logic,Contextinfo)执行后不打印
schedule.every().day.at("16:39:10").do(sell_logic)执行后不打印

可能是只定义了,没有执行方法所以没有打印出来。尝试改成这样试试:
得首先安装这个库 schedule

import schedule
import time

def sell_logic(ContextInfo):
    position_info = get_trade_detail_data('', 'stock', 'position')
    for i in position_info:
        daimaheshuliang = i.m_strInstrumentID, i.m_nVolume
        print(daimaheshuliang)

def init(ContextInfo):
    schedule.every().day.at("16:39:10").do(sell_logic, ContextInfo)  # 将ContextInfo作为参数传递给sell_logic函数

while True:
    schedule.run_pending()
    time.sleep(1)

这样应该就能正常打印了,至于报错AttributeError: 'NoneType' object has no attribute 'request_id' 得看报错在哪一行,可能不是这里的代码报错的。

如果您想在指定的时间执行函数 sell_logic 并打印一条消息,您可以使用以下代码:

import schedule
import time

def sell_logic(context_info):
    # 在这里编写您的代码
    print("在指定时间执行了 sell_logic 函数")

# 设置任务的执行时间
schedule.every().day.at("16:39:10").do(sell_logic, context_info)

# 运行任务
while True:
    schedule.run_pending()
    time.sleep(1)

在这个代码中,我将 sell_logic 函数作为参数传递给 schedule.every().day.at("16:39:10").do() 方法。这个方法会在每天的指定时间执行 sell_logic 函数。同时,我们在 sell_logic 函数中添加了一条打印消息的语句,以便在函数执行时打印一条消息。

要注意的是,如果您希望在函数中使用 context_info 参数,请确保在传递参数时不要加括号。也就是说,您应该使用 sell_logic, context_info 而不是 sell_logic(Contextinfo)

这样就可以啦
schedule.every().day.at("16:39:10").do(sell_logic, Contextinfo)

可以使用 Python 中的 time 模块和 sleep() 方法来实现按照时间打印一次。具体实现方法如下:

import time
# 打印当前时间
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 等待 5 秒
time.sleep(5)

# 再次打印当前时间
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

在上面的代码中,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 可以获取当前时间并格式化为字符串;time.sleep(5) 可以让程序等待 5 秒;最后再次调用 print() 方法打印当前时间。如果你想按照自己的需求来打印不同的时间间隔,只需要修改 time.sleep() 中的参数就可以了。

【以下回答由 GPT 生成】

根据给出的代码和要求,可以使用schedule库来实现Python定时执行的需求。下面是解决问题的具体步骤:

  1. 导入schedule库。
  2. 修改init函数的最后一行。
  3. sell_logic函数中,添加参数ContextInfo

具体的代码如下所示:

import schedule

def sell_logic(ContextInfo):
    position_info = get_trade_detail_data('', 'stock', 'position')
    for i in position_info:
        daimaheshuliang = i.m_strInstrumentID, i.m_nVolume
        print(daimaheshuliang)

def init(ContextInfo):
    schedule.every().day.at("16:39:10").do(sell_logic, ContextInfo)

请注意,修改后的最后一行中,使用了sell_logic后面直接跟参数ContextInfo,而不是调用sell_logic函数。这样就可以将ContextInfo传递给sell_logic函数,并在指定的时间执行该函数。

此外,需要确保代码中get_trade_detail_data函数的定义是正确的,并在代码中进行了导入。如果没有正确导入或定义该函数,可能会导致报错。请确保所有的依赖项都正确导入,并对函数进行适当的定义。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

换个库吧,这库不好使

结合GPT给出回答如下请题主参考
根据提供的信息,我可以看出这段代码是一个函数定义,名称为sell_logic,它的参数是ContextInfo。在函数体内部,代码调用了get_trade_detail_data函数,获取了position_info变量的值。

至于定时问题,目前代码中并没有涉及定时的部分。如果您的具体问题是如何在Python中实现定时执行某个任务,我可以给您提供一些参考。

可以使用Python标准库中的time模块或datetime模块来实现定时。具体实现方式可以使用time.sleep()函数来延迟程序运行的时间,或者使用datetime.datetime.now()函数来获取当前时间,进而计算出下一次任务执行的时间。

除此之外,还可以使用第三方库schedule来实现定时任务。schedule库提供了一些方便的函数,可以实现周期性或指定时间点执行任务的功能,使用起来比较方便。

希望以上内容可以帮助到您解决定时问题。

GPT
根据你提供的代码片段,最后一行应该按照以下方式编写:

schedule.every().day.at("16:39:10").do(sell_logic, ContextInfo)

在这里,传递ContextInfo作为参数给sell_logic函数。这将使得在每天的指定时间("16:39:10")执行sell_logic并传递ContextInfo作为参数。这样修改后,代码应该按照预期的时间触发并打印结果。

请注意检查ContextInfo变量是否在调用init函数时正确地传递并引用。此外,确保schedule.run_pending()或类似的代码在循环中被调用以便执行计划任务。

结合两个函数

def sell_logic():
    position_info = get_trade_detail_data('', 'stock', 'position')
    for i in position_info:
        daimaheshuliang = i.m_strInstrumentID, i.m_nVolume
        print(daimaheshuliang)

schedule.every().day.at("16:39:10").do(sell_logic)