
Bulatbulat48
13.03.2017
10:51:59

Dmitry
13.03.2017
10:52:10
не по теме: Кто знает хороший аналог википедии для корпоративного использования?

Igor
13.03.2017
10:52:27
mediawiki? confluence?

Dmitry
13.03.2017
10:54:20
спасибо)

Google


Anton
13.03.2017
10:55:44
код и скриншот в студию :)
import threading
import sys
from netmiko import ConnectHandler
import netmiko
import getpass
from cmdParser import cmdParsPolicy
from cmdParser import cmdGetInventory
from cmdParser import cmdGetEigrp
maxconn = 5
hostCount = 0
semaphore = None
muxwrite = threading.BoundedSemaphore()
outfile = open('result.txt','w')
def credit():
uname = input('login: ').rstrip()
pwd = getpass.getpass('pass: ')
return uname, pwd
def getMaxConn():
return int(input('max connect: ').rstrip())
def getConnectData(host,uname,pwd,cmd):
global hostCount
res = False
try:
net_connect = ConnectHandler(device_type='cisco_ios', ip=host, username=uname, password=pwd)
res = True
except netmiko.ssh_exception.NetMikoTimeoutException:
print(host + ' Timeout')
except netmiko.ssh_exception.NetMikoAuthenticationException:
print(host + ' Auth Fail')
except:
print(host + ' Unk')
if(res):
hostCount = hostCount + 1
prompt = net_connect.find_prompt().rstrip()[:-1]
#print(host, prompt)
#For eigrp
#recieve_raw_data = net_connect.send_command(cmd, delay_factor=0.2)
#For crypto
recieve_raw_data_0 = net_connect.send_command(cmd[0], delay_factor=0.2)
recieve_raw_data_1 = net_connect.send_command(cmd[1], delay_factor=0.2)
recieve_raw_data_2 = net_connect.send_command(cmd[2], delay_factor=0.2)
net_connect.disconnect()
semaphore.release()
if(res):
#res = cmdGetInventory(recieve_raw_data,host,prompt)
#wr = recieve_raw_data
#For crypto
if(recieve_raw_data_0):
print(recieve_raw_data_0)
if(recieve_raw_data_1):
print(host + ' has cert')
if(recieve_raw_data_2):
print(host + ' didnt write\n')
#For eigrp
#if(cmdGetEigrp(recieve_raw_data)):
#print(host)
#muxwrite.acquire()
#outfile.write(host+ '\n')
#muxwrite.release()
return
def main():
global maxconn, semaphore, hostCount
if(len(sys.argv) != 2):
sys.exit('Usage: ' + sys.argv[0] + ' filename')
user,pwd = credit()
maxconn = getMaxConn()
semaphore = threading.BoundedSemaphore(maxconn)
#For crypto
cmd_cry_0 = 'sh crypto isakmp sa detail | i 1.1.1.1'
cmd_cry_1 = 'sh crypto pki certificates'
cmd_cry_2 = 'sh startup-config | i ca trust-point CA'
cmd = (cmd_cry_0, cmd_cry_1, cmd_cry_2)
#For eigrp
#cmd = 'sh ip eigrp topo 0.0.0.0/0 | i from'
#cmd = 'sh flash | i crashinfo_20161'
#cmd = 'sh policy-map target sub-interface'
f = open(sys.argv[1])
print('Crypto parse: In progress...')
for i in f:
semaphore.acquire()
t = threading.Thread(target=getConnectData, args=(i[:-1],user,pwd,cmd))
t.start()
#print(str(hostCount) + ' successes hosts')
if(__name__ == '__main__'):
main()


Вадим
13.03.2017
10:56:50
привет, подскажите с чем такая ошибка связана requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot
тг бот крашится через какое то время с такой ошибкой

Bulatbulat48
13.03.2017
10:57:02
Оберни код в три обратные кавычки

Igor
13.03.2017
10:57:44
а где там про питон хоть слово?

Вадим
13.03.2017
10:57:49

Igor
13.03.2017
10:57:56

Bulatbulat48
13.03.2017
10:58:00

Igor
13.03.2017
10:58:03

Вадим
13.03.2017
10:58:11

Anton
13.03.2017
10:58:20
это интерпритатор
важно то что я визуально вижу что создаётся столько потоков, сколько я указал в проге

Google

Igor
13.03.2017
10:59:40
и че, ты запустил скрипт с аргументом 43?)

Anton
13.03.2017
10:59:44

Igor
13.03.2017
11:00:02
а че их на скриншоте 43? =)

Anton
13.03.2017
11:00:16

Igor
13.03.2017
11:00:22
взаимно)

Di
13.03.2017
11:00:30
?

Anton
13.03.2017
11:00:35
это же не моментальный вывод, там опрос раз в секунду идёт
ествественно 100% соотвествия не будет, потоки шустрее работают чем мониторилка этих потоков

Bulatbulat48
13.03.2017
11:01:06

Igor
13.03.2017
11:01:17
т.е. у тебя в коде где-то убивается поток и пересоздается новый?

Anton
13.03.2017
11:01:17
я могу просецссмонитором канешно точно отследить что там их точно скольк я задал, но мне влом

Igor
13.03.2017
11:02:05
я тебя не опускаю, я говорю, что есть отчетливая разница между виндовыми потоками, питоньими потоками и multiprocessingом до кучи

Anton
13.03.2017
11:02:12

Bulatbulat48
13.03.2017
11:02:30

Anton
13.03.2017
11:03:07
ну я так вроде и делаю
code
сам код
верно?

Igor
13.03.2017
11:03:12
нет

Anton
13.03.2017
11:03:15
ааа

Igor
13.03.2017
11:03:18
сам код внутрь code

Google

Anton
13.03.2017
11:03:36
я тупой)
сделал

Igor
13.03.2017
11:03:48
жалко, зарта нету
он шарит в винде

Anton
13.03.2017
11:04:55
да в винде я тоже кое что понимаю
я ваще не об этом изначально спрашивал
воопщем, хоть меня тут и поопсирали малёк, всё равно спасибо за ссылки на статейки

Igor
13.03.2017
11:05:30
кароче. асинхронность это штука типа потоков (питоньих) - она работает в пределах одного процесса
но если потоки переключатся питоном (GILом или чем-то там еще, хуй его знает, я не настолько шарю) сами каждые, скажем, N тиков или N мс

Bulatbulat48
13.03.2017
11:07:04
а если у меня торнадо шлет запросы (асинхронно) то это Потоки, Процессы или что это вообще?
и есть ли разница в этом в 2.7 и 3.6 ?

Igor
13.03.2017
11:07:39
то в случае с асинхронщиной мы переключаемся насильно на следующую задачу (корутину, поток) с помощью ключеового слова await

Anton
13.03.2017
11:07:45
вот, торнадо, как раз попроще в понимании
говорят

Dmitriy
13.03.2017
11:07:57
https://ru.wikipedia.org/wiki/Epoll
Например

Anton
13.03.2017
11:08:11
это я читал

Igor
13.03.2017
11:08:15
торнадо все-таки немножко про другое
но да, можно и его, как вариант
только если ты будешь простое веб-приложение писать, то вопросы у тебя про асинхронщину все равно останутся, и понятнее не станет =)

Anton
13.03.2017
11:09:38

Google

Anton
13.03.2017
11:10:35
если мы в том же самом потоке

Bulatbulat48
13.03.2017
11:12:05

Igor
13.03.2017
11:12:10
потому что если мы не воспользуемся await, код останется синхронным
async/await в питончике просто помогают избежать мозгоебства с коллбэками
надо как-то дать программе понять, что выполняемая в фоне задача завершилась

Anton
13.03.2017
11:13:22
а мозгоёбства с await они не добваляют? )

Igor
13.03.2017
11:13:39
нет?..

Маришка
13.03.2017
11:13:48
С чего бы

Admin
ERROR: S client not available

Bulatbulat48
13.03.2017
11:14:22
а где можно наглядно это посмотреть?

Маришка
13.03.2017
11:14:42

Anton
13.03.2017
11:15:42
почему-то колбак у меня как-то логично вписывается в мировозрение
может из-за того что на Си только так и делается
а вот await - это наверно инопланетяне нам завесли технологию

Igor
13.03.2017
11:15:57
вот в питон завезли синтаксический сахар

Маришка
13.03.2017
11:16:00
Шарпей посмотри

Igor
13.03.2017
11:16:02
где коллбэки не нужны
просто хуячится следующий асинхронный ивент

Anton
13.03.2017
11:17:24
о кстати, эта фраза мне кажется прояснила что-то

Маришка
13.03.2017
11:19:16
Разве тоже самое не говорят доки и пеп про async/await

Igor
13.03.2017
11:19:36
нашел охуительно подробно (но по-задротски) про async/await
https://snarky.ca/how-the-heck-does-async-await-work-in-python-3-5/

Google

Anton
13.03.2017
11:21:14

Igor
13.03.2017
11:21:29
да не за что

Маришка
13.03.2017
11:22:17

Anton
13.03.2017
11:22:45

Igor
13.03.2017
11:24:02
а одной фразой про asyncio/async/await я бы описал это так - это фича языка, которая ускоряет код, который работает с диском или сетью, говоря в нужные моменты:
– я щас короче буду http-запрос делать на другой сервак, давай-ка ты чем-нить более полезным займешься, а то этот лошара сидит с мобильного интернета на северном полюсе, тут запрос будет 2 секунды обрабатываться, ну его нахрен
– ооо, заебись, теперь работаем!
когда ты получил ответ от сервака, даешь понять питончику, что всё, работа сделана и надо б теперь с тэим ответом от сервака че-нибудь сделать
и питончик такой
– о, чё, проснулся? ну ладно, давай свою работу, сделаю, так и быть
бля, че-т все равно одной фразой не получилось
тоже нажрался б щас с удовольствием

Маришка
13.03.2017
11:26:05
Хех
У меня на гите есть парочку ботов для тг с async/await

Anton
13.03.2017
11:27:30

Маришка
13.03.2017
11:28:11
https://github.com/Marina-chan/telegram_weather_bot/blob/master/main.py


Anton
13.03.2017
11:29:10
а одной фразой про asyncio/async/await я бы описал это так - это фича языка, которая ускоряет код, который работает с диском или сетью, говоря в нужные моменты:
– я щас короче буду http-запрос делать на другой сервак, давай-ка ты чем-нить более полезным займешься, а то этот лошара сидит с мобильного интернета на северном полюсе, тут запрос будет 2 секунды обрабатываться, ну его нахрен
– ооо, заебись, теперь работаем!
когда ты получил ответ от сервака, даешь понять питончику, что всё, работа сделана и надо б теперь с тэим ответом от сервака че-нибудь сделать
и питончик такой
– о, чё, проснулся? ну ладно, давай свою работу, сделаю, так и быть
спасибо чувак, реально что-то понимаю
только вот вопрос, когда питону сообщают, что типа можешь опять работать с сокетом там например, питон типа преостанавливает то что делал в тот момент и переходит к этой задаче? или в очередь ставит?

Маришка
13.03.2017
11:29:42
В очередь

Anton
13.03.2017
11:29:45

Маришка
13.03.2017
11:30:19
Если другая корутина еще не закончила, но эта сообщила что может продолжать то она становиться в очередь

Игорь
13.03.2017
11:32:20

Ваня
13.03.2017
11:34:58
Всем добрый день. Скажите пожалуйста, Как лучше поступить. Я хочу научиться программированию. Надо ли на начальном этапе изучать c++ , а потом перейти на python? Или можно сразу изучать python?

Игорь
13.03.2017
11:36:05
В упор не вижу питона, только вижуалстудио, если я не ошибся с названием процесса

Igor
13.03.2017
11:36:08
ну если тебя не отпугнет задротство, идущее вместе с С++, то лучше, конечно, начать с крестов
Эта группа больше не существует