@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服务器。 python 3.5 或者还有其他一些简单的方法来获得当前的价格。对我而言,图片是一种更好的方式,但它可能会得到整数的价格。例如,雅虎财务并未显示道琼斯指数的当前价格
答案 0 :(得分:0)
如果你想避免碰撞,我认为最好的方法是在短时间内缓存价格指数。显然,价格指数不会每秒都发生变化。
要实现缓存,您可以设置超时(让我们说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()