@Noob_master69

Как разместить в одном приложении Heroku сразу несколько рабочих программ?

И так, имеется несколько парсеров, которые взаимодействуют с ботом 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()

Что посоветуете?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы