Развертывание для ботов Twitter: 3 альтернативы традиционному облаку

Итак, у вас есть бот, и вы хотите, чтобы он работал дольше, чем время, которое вы запускаете его в терминале, чтобы убедиться, что он работает, но вы не уверены, что делать. Развертывать ли на AWS? GCP? Azure? Включить ноутбук и держать его запущенным там вечно, вечно, вечно, вечно и просто никогда не закрывать терминал?

На фото: семейный компьютер после того, как я скачал «Goldfinger_Superman_real_version_mp3.exe» с Limewire.

Если это звучит сложно или похоже на то, что это может съесть ваш счет за электричество (или просто ваши счета в целом), то вы пришли в нужное место! У меня есть три альтернативы традиционным облачным провайдерам, о которых я хочу с вами поговорить: Render, Heroku и Linode. Эти три сервиса могут дать вам множество вариантов, когда дело доходит до того, откуда вы хотите запускать свой код и как вы хотите его развернуть.

ПРИМЕЧАНИЕ: Я новичок в технологиях и программировании, вероятно, как и вы, если вы читаете эту статью. Эта статья больше похожа на «рассказ о том, чему я научился за последнее время», чем на «экспертный совет по развертыванию». Единственное, что я могу с уверенностью сказать, это то, что я делал все то, о чем рассказываю в этой статье, так что, по крайней мере, мы с вами в одной лодке. Так что присоединяйтесь ко мне в изучении этих провайдеров и того, что они могут сделать, чтобы помочь нам запустить ботов, которые публикуют музыку Super Nintendo или песни Taking Back Sunday.

Обещаю, что в этих гифках будут не только отсылки к 90-м.

Render

С Render я знаком впервые, но мне уже нравятся возможности, которые я имею для запуска кода здесь. Здесь впечатляющее количество вариантов услуг, которые они предоставляют, но меня больше всего заинтересовали Cron Jobs для моих ботов. Для Cron Jobs требуется кредитная карта, но я уверен, что в итоге это будет стоить около 75 центов в месяц. Если стоимость является проблемой, есть бесплатные способы запуска ботов на Render, но в этой статье речь пойдет о платном (хотя и дешевом). Давайте поговорим о том, что мы имеем.

Задания Cron

Мои боты обычно написаны так, что они всегда включены, а все функции, которые заставляют их твикать в определенное время, написаны с помощью cron-задания или пакета расписания, например node-schedule. На самом деле, мои боты на Javascript возможны только с помощью пакета node-schedule. А я настолько новичок в Python, что не нашел отличного способа правильно воссоздать этот пакет. Конечно, я делал эту работу как хобби, так что я уверен, что есть способ сделать это, но у меня так много времени между всеми моими супер-крутыми другими хобби, так что мы просто скажем, что я плохой программист и пойдем дальше.

Видите, я же говорил. Иногда мои гифки — из 80-х!

Вот почему я был так рад найти GUI-интерфейс в Render, который делает работу с Cron намного проще, чем я когда-либо думал. И он работает из коробки с GitLab. Итак, давайте поговорим о том, как сделать Cron Job для вашего бота.

Вы можете зарегистрироваться в GitLab, Google или GitHub, или использовать электронную почту и пароль по вашему выбору. Я зарегистрировался на GitLab, поскольку буду использовать репозитории GitLab для предоставления кода для этих веб-служб. После разрешения Render подключиться к вашей учетной записи, вы подтвердите ее с помощью ссылки, отправленной по электронной почте, а затем настанет время выбрать службу!

Выберите Cron Job, а затем подключите его к определенному репозиторию. Вероятно, вас снова попросят подключиться к вашей учетной записи GitLab, а затем вы увидите список доступных проектов. Выберите тот, в котором находится ваш бот. Давайте поговорим об опциях, которые вам будут предложены на следующей странице.

Во-первых, назовите ваше задание Cron Job. Это нужно для того, чтобы вы могли отличить его от других сервисов, которые вы можете иметь на Render. То же имя, что и у вашего репозитория, будет подходящим. В качестве среды я выбрал Python3, поскольку это то, что нужно моим ботам для работы. Выберите регион, который вам больше нравится. Я всегда выбираю ближайший ко мне, но это не имеет большого значения. Выберите ветку, которая будет запускаться при выполнении задания cron; в моем случае main — лучший выбор. Этот выпадающий список основан на ветках, которые есть в вашем подключенном репозитории. Следующая строка автоматически заполняется в зависимости от выбранной среды. Поскольку мы выбрали Python3, здесь будет заполнено pip install -r requirements.txt. Вы ведь знаете, что это значит?

Пожалуйста, скажите, что знаете, потому что я едва понимаю, что происходит почти каждый день.

Это значит, что вам нужен файл requirements.txt в вашем репозитории, и он должен содержать список зависимостей для вашего проекта. Хороший способ узнать, что такое зависимости, — это проверить, что вы импортировали в начале вашего python-файла. Для моих ботов мне нужны Tweepy, config и Python-dotenv Requirements.txt выглядит следующим образом для Divas, моей коллекции ботов Twitter.

tweepy
python-dotenv
config 

Вход в полноэкранный режим Выход из полноэкранного режима

После этого идет фактическое расписание для вашего задания cron. Это означает, что вам нужно знать, как отформатировать задание cron. Это как раз тот момент, когда я гуглю «Как запустить команду cron job», чтобы знать, что вам ответить. Я скоро вернусь.

*I promise I’ll be back don’t go anwyhere ʲᵘˢᵗ ˢᵗᵃʸ ᵗʰᵉʳᵉ *

Итак, после быстрого поиска в Google и примерно 40 минут отвлечения на Tik-Tok, вот как форматировать выражения cron.

Выражения Cron — это способ выражения определенного расписания. Это, конечно, сложнее, чем я собираюсь рассказать здесь, но давайте поговорим о том, что вам нужно знать. Выражение состоит из шести-семи полей, разделенных белым пробелом, которые указывают на расписание. Существуют определенные символы, которые представляют различные значения для этих полей, и важно знать хотя бы несколько из них. Вот пример выражения cron, которое представляет вторники в 12:47:15 вечера по UTC.

15 47 12 ? * TUE *.

Итак, из этого мы можем сказать, что первое число — это секунды, второе — минуты, следующее — часы, но затем у нас есть знак вопроса. И звездочка. Вопросительный знак находится в поле «день месяца» или «дата». Вопросительный знак означает «нет конкретного значения», а звездочка означает «все возможные значения». Это похоже на разницу между «не имеет значения» и «каждый раз». Так, знак вопроса означает, что день месяца не важен, потому что двумя полями позже мы определяем день для стрельбы как «TUE», то есть вторник. Звездочка в пятом поле, поле месяца, означает каждый месяц. И последняя звездочка — это поле года, и она тоже означает каждый год. Есть и другие специальные символы, о которых вы можете узнать здесь, а для тех из вас, кто, как и я, хочет иметь возможность выбирать из генератора выражение для своего cron, вот, пожалуйста!

Итак, теперь, когда вы, как и я, стали экспертом в области выражений cron, введите время выполнения задания в следующее поле формы. ПРИМЕЧАНИЕ: Я заметил, что выражение cron для Render состоит всего из пяти полей. Я не уверен, что оно исключает, но знаю, что когда вы вводите свое выражение, прямо под ним на английском языке говорится, когда будет выполняться команда run. Это очень полезно, спасибо Render!

Последнее, что вы вводите, это команда run, которая в моем случае python3 bot_file.py. Это запустит файл как основной и выполнит все, что находится в файле.

Последний шаг — решить, какой план вам понадобится. Этот план варьируется от 512 МБ оперативной памяти за 0,016¢/мин до 8 ГБ за 0,405¢/мин. Для наших ботов нам нужно совсем немного, поскольку они запускают всего один файл Python.

Есть кнопка для расширенных опций, с такими опциями, как переменные окружения или секретные файлы. Это отличные способы скрыть ключи API Twitter, поэтому рекомендуется использовать их, чтобы ваши боты не были взломаны. Нажмите кнопку внизу, чтобы создать задание cron!
Отсюда вы сможете увидеть свою сборку, а когда она завершится успешно, вы сможете проверить ее с помощью кнопки Trigger Run в правом верхнем углу страницы. Примечание: API Twitter ограничивает точное дублирование твитов дважды подряд в течение 24 часов, поэтому если вы протестируете своего бота дважды подряд, во второй раз вы получите ошибку.

Heroku

Одним из отличных способов размещения вашего кода является Heroku. Heroku бесплатен до ноября 2022 года, а дополнительная информация о студенческих планах должна появиться в ближайшее время. Вы можете создать учетную запись здесь.

Heroku работает на основе того, что они называют Dynos. Каждый Dyno — это место, где ваш код будет выполняться так же, как на вашей локальной машине. Чтобы сделать это, мы создадим Dyno, дадим ему некоторые инструкции и, наконец, подключим наш репозиторий кода в GitLab к Dyno на Heroku.

Поехали!

Новое приложение Heroku

После входа в систему создайте новое приложение в Heroku. Назовите его и включите! Здесь важно добавить procfile в ваше репо. Эта документация поможет вам сделать это, но на самом деле все, что вам нужно, это включить worker: npm start в виде одной строки в файл под названием procfile. На вкладке ресурсов вам нужно убедиться, что выбран worker, а не web. Часто сначала этого нет. Когда вы создадите procfile и развернете систему в первый раз, опция должна появиться, и тогда вы сможете отключить web и включить worker. Этот ответ на stack overflow был полезен, когда я разбирался в этом.

Как только вы это сделаете, здесь есть инструкции по развертыванию. Если вы используете Github, вы можете подключить свой репозиторий к нему и сделать так, чтобы при обновлении основной ветки код отправлялся на Heroku! Другой способ — использовать CLI (интерфейс командной строки) и вручную развернуть код. Вы будете следовать инструкциям, предоставленным Heroku для развертывания вашего кода! Во-первых, вы должны добавить свои ключи в качестве переменных окружения в Heroku.

Найдите вкладку настроек, а затем нажмите кнопку «config vars». Как и в Render, здесь вы добавите имя ключа и значение. Таким образом, ваш проект получит доступ к вашим ключам и сможет публиковать сообщения в twitter-аккаунте!

СЕЙЧАС у Heroku есть ваши ключи, ваш репозиторий обновлен, и вы готовы к работе. Инструкции, предоставленные Heroku, расскажут вам, как начать работу, но на самой странице также есть некоторые инструкции по работе с CLI. Вот инструкции со страницы приложения о том, как развернуть приложение на heroku с помощью командной строки.

Установите Heroku CLI

Скачайте и установите Heroku CLI.

После установки введите в командную строку следующее, чтобы войти в систему и следовать подсказкам на экране.

Существующий Git-репозиторий

Для существующих репозиториев просто добавьте heroku remote, введя следующее в командной строке внутри локальной папки репозитория.

$ heroku git:remote -a name-of-dyno

В терминале, когда вы будете готовы выполнить push в heroku, введите git push heroku main. Если удаленный сервер настроен правильно, он должен запустить новую версию на heroku и развернуть ваш код!

Расширенный метод

В этой статье есть дополнительная информация об использовании GitLab CI/CD для автоматического развертывания вашего кода на Heroku. Это именно то, что я использовал при настройке CI/CD для своих ботов, поэтому я просто дам ссылку на нее здесь, поскольку она гораздо лучше, чем я, объясняет процесс.

Linode

Linode — отличный вариант, по сути, он работает как виртуальная машина, на которой вы можете запускать свой код. Это самый дорогой вариант, но все же недорогой — 5 долларов в месяц. Мне нравится Linode потому, что он похож на работу на локальной машине, а процесс размещения файлов на Linode кажется очень простым, как только у вас появляется нужное приложение.

После регистрации учетной записи Linode главная страница будет выглядеть следующим образом.

Создайте Linode и выберите последнюю версию Ubuntu (или предпочитаемую вами версию) из первого выпадающего меню. Выберите ближайший к вам регион, а затем выберите Nanode, самый маленький вариант. Он стоит всего $5 в месяц и имеет более чем достаточно места и оперативной памяти для вашего Twitter-бота и любых других проектов, которые вы захотите на нем разместить. Когда появится запрос на создание ярлыка Ubuntu, назовите его именем вашего проекта. Придумайте корневой пароль и нажмите создать. Обязательно запомните пароль root, так как вам придется использовать его каждый раз, чтобы войти в Linode.

Как только он загрузится, пора зайти внутрь и немного прибраться.

Установка, обновление и подготовка к работе с ботом.

Linode предоставляет консоль LISH, которую можно использовать для доступа к вашему Linode. В правом верхнем углу домашней страницы Linode вы увидите ссылку «Launch LISH Console».

Нажмите на нее, и вы получите доступ к только что созданному экземпляру Ubuntu. Вы также можете подключиться к нему по SSH с любого терминала, используя текст SSH-доступа чуть ниже LISH.

Как только вы вошли, запустите «apt update» для проверки наличия обновлений, а затем «apt dist-upgrade». Рекомендуется создать новое имя пользователя для Linux, чтобы не запускать все через root, но в данном случае, все, что вы делаете, это бот для Twitter, поэтому это не так важно. Если вы хотите сделать это правильно, вы можете запустить создание нового пользователя и дать ему права администратора, следуя этому видео.

Если ваш код находится на Github, вы можете использовать git для клонирования вашего файла, или вы можете использовать GUI интерфейс Filezilla для переноса вашего кода на экземпляр Linux. Поскольку это учебник для начинающих, давайте воспользуемся Filezilla для передачи наших файлов.

Это будет очень весело для всех нас.

Использование Filezilla

Вот как выглядит Filezilla после того, как вы ее откроете.

Внутри Filezilla вы можете увидеть поля ввода для Host, Username, Password и Port. Host — это IP-адрес вашего наноузла, имя пользователя должно быть «root» или любое другое имя пользователя, которое вы задали ранее, а пароль — это то, что вы задали в начале. В качестве номера порта используйте «22». При подключении вы получите сообщение о том, что ключ неизвестен. Это нормально, но вы должны дважды проверить правильность IP-адреса. Если это так, установите флажок, чтобы запомнить ваш Linode на Filezilla.

Перейдите в каталог, где вы храните файлы для вашего Twitter-бота. Вам понадобятся .env, config.js, package.json, package-lock.json, папка node_modules и индексный файл для вашего бота. Мой индексный файл называется snes.js. Файлы, которые я переношу, выделены на следующем рисунке.

Когда вы выделите файлы, которые хотите перенести, вы можете нажать и перетащить файлы вправо, где вы увидите файлы вашей Linux-машины. После того как вы перенесли файлы, вы можете использовать консоль LISH или любой терминал с SSH-соединением для запуска вашего бота так же, как вы бы сделали это из терминала в Visual Studio Code. Введите «npm run develop», и ваш код запустится, используя переменные .env, которые вы установили ранее. Это заставит бота запуститься, и он будет продолжать работать на сервере до тех пор, пока сервер остается непрерывным.

Спасибо

Это три отличных варианта хостинга ботов! Дайте мне знать в комментариях, какой из них вам больше всего нравится или какие еще варианты у вас есть!

Оцените статью
devanswers.ru
Добавить комментарий