Python – Django Celery – кейс длиною в вечность.

Вкратце: когда добавляешь пачку тасок на Celery worker’ы, случается так, что парочка из них отваливается или засыпает или еще чего. Долго не доходили руки поправить это недоразумение, поэтому я просто рестартовал все воркеры раз в пару дней или прямо перед началом проверки рутины, в общем очень сложно было поймать и воспроизвести тот случай, когда без каких-либо ошибок воркер просто молчал. И наконец дошоли руки запилить кривофикс, время покажет насколько он толковый, суть в следующем: В сразу после момента определения свободного воркера  – запускать app.control.heartbeat() и app.control.ping(timeout=10) и если ответ пришел (в виде [{‘alpha@host’: {‘ok’: ‘pong’}}]) – значит воркер готов и можно передавать ему таску, пачку тасков, рутину и тп. Если ответ пришел отличным от этого – даем ошибку и ничего не запускаемShort Read more…

Python 3 showing progressbar while subprocess.Popen

Have an interesting case I want to share and save for future. One small problem in this system: https://github.com/trianglesis/BMC_TPL_IDE is showing when some process is running and was not hanged up. Sometimes we need to run a huge amount of checks and tests and would be great to know if something hangs before killing it mannually. I used different scenarios and mostly a module pregressbar2, and this is what I finally can compose: Make worker which will execute job sorf of randomly:

Make process executor:

  Voilla! But there is still a small problem – this bar will update it’s state only when process post something in stdout. Between posts it will stay calm for random amount of timeShort Read more…

Пост с именинниками Вконтакте

Публикация поста с именинниками Вконтакте: Старый скриптец, который я использовал около года назад для выборки именинников и публикации поста с ними на стену сообществ Вконтакте. Выкладываю в публичный доступ, так как морально он устарел и код в нем выглядит ужасно, но подходит чисто для образовательных целей и “авось кому пригодится” мне бы он помог на первых порах изучения, может быть … Сам код можете смотреть здесь: В ближайшие дни, недели, месяцы я буду выкладывать все эти прошлые поделки, по мере того, как полностью перепишу их на новый манер, сейчас у меня основная задача – полностью унифицировать эти отрывки кода и сделать из них полноценную систему управления и автоматизации, поэтому, эти вот отрывки сами по себе уже никакой ценности не несутShort Read more…

Python schedule how to

Задачка на вечер: Дано: задание, которое нужно выполнять в заданные промежутки времени, модуль Python schedule. Задача: запускать одну и ту же задачу с разными значениями offset раз в 10 сек, так, чтобы 0ffset=119 запускался в 10 сек от начала каждой минуты, offset=219 на 20й секунде каждой минуты и так далее. Все что пока смог сделать – заставить выполняться задачу каждую 10ю секунду, НО! это грозит тем, что каждые 10 сек в очередь добавляется каждая след. задача, так что может выполняться все куда чаще, чем раз в 10 сек. Есть идея – сделать задержку в 10 сек после каждого добавления задачи в очередь, тогда может получиться задержка в 20 сек, потом выполнение подряд нескольких задач, и снова 20 сек задержки. СломалShort Read more…

Atlassian Confluence REST API

Как работать с REST API Confluence. Eng  О чем этот топик? Структура API в системе Confluence. Объекты, файлы, статьи, родство и проч. Формирование запроса(адреса) в API Confluence Открытие сессии и удержание её в памяти – ! Формирование заголовков при помощи модуля requests и – json ! Отправка файла, содержания файла, вики-разметки на сервер Confluence – ! Интерпретируем ответы от сервера Что такое Atlassian Confluence вы можете почитать здесь: https://www.atlassian.com/software/confluence https://ru.wikipedia.org/wiki/Confluence Кому нужен этот топик? Тем мученикам, которые хотят автоматизировать процесс написания/отправки документации в разработке. Тем мученикам, которые как и я, по очевидным примерам не могут разобраться в модуле requests касаемо работе с заголовками. Мне самому, чтобы не забыть свой “подвиг” и все его наработки, так как память имеет свойство “стираться”.   В тот момент, когдаShort Read more…

Python Run External Command And Get Output On Screen or In Variable

Отседова: http://www.cyberciti.biz/faq/python-run-external-command-and-get-output/ The basic syntax is:

Run ping command to send ICMP ECHO_REQUEST packets to www.cyberciti.biz:

Свой вариант:

Чисто чтобы не забыть, себе шпора. Быть может очень скоро пригодится. С аутпутами пока не разбирался, как-то лениво, начну делать тулзень для автоматизации работы – разберусь по пути! How do I get real time output from my commands on screen? The p.communicate() has a few problems: The data read is buffered in memory, so do not use this method if the data size is large or unlimited. It will block next statement till external command is completed i.e. you will not get real time output from the command. The following program will run netstat unix command and start displayShort Read more…

Вождь Бот возможности и функции

“Вождь Бот” это автоматизированная система ведения рубрик в сообществах и группах в социальных сетях “Вконтакте” и “Facebook” (частично).   Над его разработкой трудится пока только один человек, поэтому многие новые функции будут еще появляться, а улучшение уже существующих может занимать много времени. У проекта пока даже нет веб-версии, которая могла бы служить центром управления этими функциями, поэтому их настройка пока происходит вручную, лично разработчиком и частично администратором группы, к которой система будет подключаться.   Возможности системы “Вождь Бот” на данный момент следующие: Возможности Вождь Бота: Поздравление участников группы с днем рождения: https://vk.com/wall-46631810_451052 Прогнозы погоды: Стандартный прогноз на день: https://vk.com/wall-46631810_450842 “Угадай погоду”: https://vk.com/wall-46631810_451001 Публикация списка последних 100 забаненных пользователей: https://vk.com/wall-46631810_449891 Проверка наличия предложенных новостей в нескольких группах, и кол-во постов ужеShort Read more…

python script as centos service

Task completed! I made a vkontakte Bot which delete all comments are not from group members! But I do not want to run it by cron, because it will SPAM all my system with cron emails. But I found resolution: make a worker.py allow worker to run delete scripts on time periods add worker as centos service have fun! Maybe later I’ll add more code, but now just for example I’ll show only worker and bash script:

And bash to run this as service:

Log: and process:   Based on: Run python as service: https://wolfpaulus.com/journal/software/pythonlauncher/ Schedule python: https://github.com/dbader/schedule Python 100% CPU: http://raspberrypi.stackexchange.com/questions/8077/how-can-i-lower-the-usage-of-cpu-for-this-python-program/8078   Read more…

How tired I am of Google way how get API tokens

You must: Create application and take its id and secret. Make a GET request to send secret and id with needed scopes of access. Obtain TEMPORARY access token and refresh token (first lives about 3000 – 5000 sec, the second can probably live infinite) Use this access token to GET something through REST, check if this token is not expires already. You want to GET something ELSE? First check if your token is not expired, then if expired – use refresh token to get NEW TEMPORARY token. Do something else. Nice turn google! You are the best of masters of creating shitcode. Before starting real work on google API and my own project with Google Drive I’ll learn pythons “requests” perfectly,Short Read more…

Google Drive API

Thanks to this guy, whose question and gist helps me understand the google api and requests for it to get access for google drive. http://stackoverflow.com/questions/22534959/access-google-drive-api-in-python-whithout-google-api-python-client-installed-a I found everything! If anybody will be confused like me: Get your google drive your_api_key from here: https://console.developers.google.com/apis/credentials?project=[your_project] in section with name “API keys” – or you can generate it by pushing “New Credentials” -> “API key” Also you can get your token with google “quick start” even for python3: https://developers.google.com/drive/v2/web/quickstart/python Your token will be saved on system user’s folder (C:/Users/user/.credentials) or (/root/.credentials) for Linux if you run it under “root”. The token is in “access_token” key value. Then you can generate request, but at first check this: http://docs.python-requests.org/en/master/user/quickstart/#custom-headers And this is working example toShort Read more…