Википедия:Форум ботоводов

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Боты

Как запустить бота в grid на Tool labs и по расписанию?[править вики-текст]

Есть бот написанный на python 3.4, из консоли Tool labs запускается без проблем. Надо запускать его автономно и по расписанию.

В справке Tool labs написано, что это надо делать в гриде [1][2], командой типа jsub -N job_name myscript. Но оказывается там установлена старая версия python, без нужных модулей предустановленных на Tool labs, и скрипт валится с ошибками. Видел предложения ставить среду виртуального окружения virtuaenv, а в неё свой python с модулями, пробовал, но оно ставит туда версию 2.7, а другую надо как-то компилировать, ещё какие-то дебри… и непонятно заработает ли в итоге на грид…

Может задача решается просто? --Vladis13 (обс) 11:11, 20 августа 2016 (UTC)

  • Спрашивайте англоязычных лабсовцев, на каналах tech или labs или где-то на вики wikitech. MBH 10:19, 21 августа 2016 (UTC)
  • Если будет результат — напиши сюда или лично мне, пожалуйста, заинтересовался этой темой. ~Facenapalmобсвкл 10:31, 21 августа 2016 (UTC)
    1. Оказалось, что в гриде по умолчанию задания запускаются на устарелой 12-й версии Linux Ubuntu, см. phabricator:T143473. Для новой надо указывать ключ -l release=trusty в командной строке. В связи с этим багрепортом начат уход со старой версии Убунты, её поддержка закончится в апреле 2017.
    2. Если скрипт, запускаемый на грид на python, выводит или запускает команды с русским языком, то возможна проблема с кодировкой. Починка: phabricator:T143691 (указать utf-8 в переменных окружения PYTHONIOENCODING и LANG). Также эта проблема или «file not found» может быть, если скрипты сохранены с переводами строк в формате Windows CRLF, надо в формате Unix LF.
    3. Запуск по расписанию через стандартный cron, см. Help:Tool Labs/Grid#Scheduling jobs at regular intervals with cron. Например, запуск скрипта каждые 6 минут: */6 * * * * jsub -l release=trusty -once -N job_name python3 ~/script.py
    4. Вывод заданий по умолчанию пишется в файлы в корне: job_name.out — вывод, job_name.err — ошибки. --Vladis13 (обс) 21:53, 23 августа 2016 (UTC)
  • Вот читаю я это и с удивлением понимаю, что запуск экзешников, написанных на шарпе, через моно, несмотря на видимую костыльность - работает лучше, чем использование нативного питона. MBH 19:43, 26 августа 2016 (UTC)
    • Они видимо сколько-то лет назад поставили Linux и забыли, из-за малого использования, причём только в своей англоязычной локали. Годы прошли, всплыла проблема устарения версий, и необходимости глобальной utf8. На обычном-то сервере tool labs народу много, этих проблем давно нет. А вы на гриде запускаете? --Vladis13 (обс) 21:00, 26 августа 2016 (UTC)
      • Да MBH 21:19, 26 августа 2016 (UTC)
        • А вот у вас выделяется по 1-2 Гб памяти на задачу. Это важно указывать? По умолчанию 256 Мб. Как узнать сколько надо? --Vladis13 (обс) 23:29, 26 августа 2016 (UTC)
          • Если приложение падает, можно предположить, что это из-за недостатка памяти и увеличить лимит. И это не "сколько выделяется", а по превышении какого предела лабс такое приложение будет убивать. MBH 01:58, 27 августа 2016 (UTC)