И так, имеется несколько парсеров, которые взаимодействуют с ботом VK, то есть с разных сайтов собираются данные и передаются к боту. Бот будет размещен на Heroku, и мне нужно, чтобы сразу 4 программы (3 парсера и сам бот) должны были запущены одновременно. Код одного из парсеров:
import requests as req
from bs4 import BeautifulSoup as BS
import json
import sched, time
s = sched.scheduler(time.time, time.sleep)
def get_ruble_course():
s.enter(3600, 1, get_ruble_course)
#для того, чтобы данные обновлялись
r_usd = req.get('https://finance.rambler.ru/calculators/converter/1-USD-RUB/')
html_usd = BS(r_usd.content, 'html.parser')
value_usd = html_usd.select('.converter-display__value')
dif_usd = html_usd.select('.converter-change-table__change')
usd_course = value_usd[1].text
usd_course_dif = dif_usd[0].text
ruble_couse_data = {
'usd_course' : usd_course,
'usd_course_dif' : usd_course_dif,
}
with open('ruble_couse_data.json', 'w') as f:
json.dump(ruble_couse_data, f)
print('Ruble course data was successfully updated')
get_ruble_course()
s.run()
Код бота:
#import vars from Heroku
import os
token = os.environ['TOKEN']
group_id = os.environ['GROUP_ID']
#import lib for vk bot
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
#login to system as club bot
vk_session = vk_api.VkApi(token=token)
longpoll = VkBotLongPoll(vk_session, group_id)
#to get methods
vk = vk_session.get_api()
with open('ruble_course_data.json', 'r') as ruble_file:
ruble_data = json.load(ruble_file)
#ruble course message send
rc_message = 'Узнать курс рубля: \n 1 доллар = {0} рублей\n\
Изменение:{1}'.format(ruble_data['usd_course'], ruble_data['usd_course_dif'])
def main():
for event in longpoll.listen():
#if new message was got
if event.type == VkBotEventType.MESSAGE_NEW:
message = event.obj['message']
user = message['from_id']
text = message['text']
if text == 'Узнать курс рубля':
vk.messages.send(peer_id = user, message=rc_message,\
random_id = 0)
print("Bot is running...")
#run mainloop
if __name__ == '__main__':
main()
Что посоветуете?