Tishka17
А смысл?
Egor
казалось бы запускаешь два процесса и они будут параллельно работать - но в одном bot.polling() блокирующий, а другом while true - и они не могут стартовать одновременно
Tishka17
Изобретаешь системы запуска приложений?
Egor
ага
Tishka17
Ну вот и сделай два сервиса
Egor
а если все-таки абстрагироваться от этой идеи и понять почему не могут запуститься два процесса с блокирующим тредом?
Egor
в каждом
Egor
мне кажется что это какое-то не нормальное поведение системы
âDêšwu öBipci
Нормальное
Egor
Нормальное
объясни плз. на сколько я понимаю, должен блокироваться созданный процесс, но почему блокируется все приложение?
Egor
Могут
подскажи пожалуйста что нужно учесть для того чтобы они могли, потому что у меня они в данный момент не могут
Egor
в самом низу инита фласка у меня Process(target=tgbot.watchdog()).start() Process(target= bot.polling()).start()
Tishka17
Я упустил трейс и код. Иди не было?
Egor
если первый запустился то второй не запускается
Tishka17
У тебя до запуска процесса не доходит
Tishka17
Он ждёт пока watchdog закончит работать и вернёт результат, который уже будет передан в новый процесс как таргет
Pavel
в самом низу инита фласка у меня Process(target=tgbot.watchdog()).start() Process(target= bot.polling()).start()
а зачем ты вызываешь таргеты при создании процессов?
Egor
а зачем ты вызываешь таргеты при создании процессов?
чтобы внутри созданного процесса запустить ту или иную функцию
Tishka17
В таргет надо передать функцию
Tishka17
Если ты функцию вызвал, вот когда она что-то вернёт, оно и будет передано в таргет
Pavel
Он ждёт пока watchdog закончит работать и вернёт результат, который уже будет передан в новый процесс как таргет
кажется в данном случае у него запускается поллинг при создании процесса
Pavel
который с while 1
Pavel
до создания процесса он видимо не дойдет никогда
Dogma
Посмотри в таргет
Tishka17
в самом низу инита фласка у меня Process(target=tgbot.watchdog()).start() Process(target= bot.polling()).start()
Сначала вычисляютс аргументы, потом происходит создание процесса. У тебя в аргуиенье вызов функции
Pavel
я про это же
Egor
без скобок поведение такое же
Tishka17
Покажи как скобки убрал и какое поведение наблюдаешь
Pavel
Egor
Egor
покажи код целиком
там несколько модулей. что конкретно еще показать?
Egor
Tishka17
Так
Tishka17
И почему ты решил, что ничего не изменилось?
Tishka17
Например, дерево процессов смотрел? Или может принты у тебя где-то есть?
Egor
И почему ты решил, что ничего не изменилось?
потому что запустил приложение, и либо у меня бот начинат поллить, либо отрабатывает watchdog
Tishka17
В смысле, либо?
Egor
в зависимости от того как я переставляю в коде процессы
Egor
ну короче если говорить о ситуации на данном скрине то только поллинг работает
Tishka17
Лучше деревом
Egor
внезапно
Anonymous
В чем дело было?
Tishka17
Наверняка в коде, который не показал
Egor
я более пристально вгляделся и все таки не зависимо от того в каком порядке стартуют процесс, отрабатывал только вотчдог - что навело на мысль что поллинг в процессе не работает (хотя и ошибки не дает) - видимо там под капотом юзается queue
Egor
Egor
а так работает
Anonymous
Ке?
Egor
я с подобным сталкивался когда сокетио заводил из-под мультипроцессинга, без редиса оно не работает
Anonymous
Гевент работает норм на процессах
Egor
видимо потому что из процесса теряет из контекста экземпляр класса который инициализируется в мейн процессе, и работать будет только с редисом (или прочим кешем сообщений)
Anonymous
Тут что-то другое
Egor
Гевент работает норм на процессах
а причем тут гевент? но кстати в свое время я его на процессах не завел, а вот на тредах он работает вполне сносно
Egor
опять же гевент все таки штука для управления потоками, а не процессами
Egor
и на ту же граблю вроде легко можно с ним наступить
Anonymous
Фласк-сокетио написан на гевенте
Egor
Фласк-сокетио написан на гевенте
на сколько я помнб flask_socketio по дефолту гевент не юзает, но можно заюзать гевентный патч для юникорна
Egor
и опять же работать это будет только с тредингом, а с мультипроцессингом будет то же самое что щас у меня было
Anonymous
Что он юзает по дефолту?
Egor
хотя
Egor
да, гевент там есть в зависимостях
Egor
но чсх flask_socketio из-под мультипроцессинга у меня только с редисом завелся
Egor
Что он юзает по дефолту?
вот только так, в доке об этом прямо сказано - мол хотите мультипроцессинг - инициализируйте класс сокетио с внешним брокером сообщений socketio = SocketIO(app, message_queue='redis://')
Egor
а патч для gunicorn, я вспомнил, как раз нужен чтобы gunicorn с flask_socketio подружить
Anonymous
Ладно
Aragaer
подозреваю происки роскомнадзора
Aragaer
да это я так, о своем
👑OGURCHIK🖤
🤔бан за дубликат
Anonymous
Pagespeed ругается на кэширование статики, как можно задать Cashe-Control в Django?
Dasha
initiator.name если мне память не изменяет
Коллеги, кто-то пользовался api github? Не удаётся создать функцию поиска по содержимому закрытого репозитория - выдаёт "Nothing found", хотя токен передан в запросе
alexcher
решить поссчитать сколько в питоне инструкций LOAD_*
alexcher
LOAD_CONST LOAD_GLOBAL LOAD_DEREF LOAD_NAME LOAD_FAST LOAD_CLOSURE