【问题标题】:current stock price of Dow Jones index as screenshot of by telegram bot道琼斯指数的当前股价作为电报机器人的截图
【发布时间】:2017-09-24 23:15:04
【问题描述】:

我正在创建一个电报机器人,它将向我发送道琼斯的当前股价。该过程以这种方式工作,它从谷歌保存屏幕截图,然后将其剪切并作为消息发送。但是,如果某个 2 或更多的人将同时运行此命令怎么办。我不想要碰撞。我需要一些线程或什么?我可以更快地完成这个过程吗?

@bot.message_handler(func = lambda message: '????Dow Jones'in message.text)

def repeat_all_messages222(message):
    url='https://www.google.com/search?q=dow+jones+current+price&oq=dow+jones+current+price&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8'
    adr='/home/weblanss/mysite/dowJones/ss.png'

    bot.send_message(message.chat.id,'please wait your request is being processed')

    size=(120 ,190,760, 640 )
    ecran(url,size,adr)
    w2=open(adr,'rb')
    bot.send_photo(message.chat.id,w2)


def ecran (url,size,adr):
    display = Display(visible=0, size=(800, 600))
    display.start()

    browser = webdriver.Firefox()

    browser.implicitly_wait(15)


    browser.get(url)
    browser.implicitly_wait(15)
    browser.save_screenshot(adr)

    browser.quit()
    img = Image.open(adr)
    crop_rectangle = size
    cropped_img = img.crop(crop_rectangle)

    cropped_img.save(adr)
    display.stop()

我正在使用 pythonanywhere 服务器。蟒蛇3.5 或者也许还有其他一些简单的方法可以获得当前价格。对我来说图片是一种更好的方法,但它可能以整数形式获取价格。例如,雅虎财经不显示道琼斯指数的当前价格

【问题讨论】:

    标签: python python-3.x screenshot telegram-bot stockquotes


    【解决方案1】:

    如果你想避免冲突,我认为最好的方法是在短时间内缓存价格指数。显然,价格指数并不是每秒都在变化。

    要实现缓存,您可以设置一个超时时间(比如 1 分钟)和一个标志。像这样初始化它们:

    timeout = time.time()flag = False。请注意,time.time() 返回当前时间。

    每当用户请求价格指数时,首先检查是否超过 1 分钟超时:

    if time.time() - timeout > 1 * 60:
        # you need to update the screenshot
    else:
        # you can send the user the previously taken screenshot
    

    这里的标志是为了防止碰撞。如果flag is True 表示系统正在截屏,在截屏完成之前不能再次请求。因此,我们完成如下代码:

    if time.time() - timeout > 1 * 60:
        if flag is False:
            flag = True
            take_screenshot()
            flag = False
        while flag is True:
            time.sleep(1)
        send_screenshot()
    else:
        send_screenshot()
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      相关资源
      最近更新 更多