Испробовано куча рецептов из интернета с правкой реестра, переустановкой компонентов из PowerShell. Не помогло. Нашел свой рецепт. Правда поможет только если у вас заведено несколько пользователей в системе. Или создайте пользователя, и воспользуйтесь им. Суть «ремонта»: нужно скопировать папку C:\Users\<Имя пользователя>\AppData\Local\TileDataLayer\Database\ из того пользователя, под которым «Пуск» работает, в того у которого не работает.
Архив за месяц: Апрель 2016
Потоки на Python
На удивление, на такую простую вещь как создание потоков, потратил пару часов, из-за обилия в интернетиках примеров с ошибками в коде. Потому привожу рабочий пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#!/usr/local/bin/python # coding=utf-8 import threading import time debug=True #количество одновременно запускаемых потоков thread_count=10; def putlog(txt): if (debug==True): print txt def worker(th): putlog("--стартовал поток "+str(th)); i=0 while i<config.thread_count: putlog("--поток "+str(th)+", шаг "+str(i)) time.sleep(1) i=i+1 def main(): putlog("-скрипт стартовал!"); #запускаем потоки for i in xrange(thread_count): thread = threading.Thread(target=worker, args=(i,)).start() #ждем пока потоки завершатся while threading.active_count() >1: putlog("!ждем завершения потоков") time.sleep(1) putlog("-скрипт закончил работу!"); main() |
Результат работы скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-скрипт стартовал! --стартовал поток 0 --поток 0, шаг 0 --стартовал поток 1 --поток 1, шаг 0 --стартовал поток 2 !ждем завершения потоков --поток 2, шаг 0 --поток 0, шаг 1 !ждем завершения потоков --поток 1, шаг 1 --поток 2, шаг 1 --поток 0, шаг 2 !ждем завершения потоков--поток 1, шаг 2 --поток 2, шаг 2 !ждем завершения потоков -скрипт закончил работу |
Отправка сообщения на email по smtp, в utf8 с телом в html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart msg = MIMEMultipart('alternative') html_body="Внимание! У вас есть задача (№"+str(id)+") в sbss, которая уже длительное время находится в статусе ожидания! Через 3 дня она будет автоматически закрыта.. <br/><a href=https://oeirfoeriferoife.ru>"+name+"</a>".encode('utf-8') msg.set_charset("utf-8") msg['Subject'] = "Уведомление о длительной задаче №"+str(id); msg['From'] = sbss_from_email msg['To'] = m_arr["email"] part = MIMEText(html_body, 'html', 'UTF-8') msg.attach(part) s = smtplib.SMTP(sbss_from_server) s.login(sbss_from_email,sbss_from_pass); s.set_debuglevel(1); s.sendmail(sbss_from_email, m_arr["email"], msg.as_string()) s.quit() |
Python и ошибка InternalError(-1, ‘Unread result found.’, None))
Сия ошибка возникает когда одно и тоже соединение используется в «вложенных» запросах. Хотя курсоры разные. Т.е. внутри проходу по циклу cursor.fetchone(), выполняется еще один запрос с этим же идентификатором соединения, но с другим курсором.
Решение: курсор создаем с «буфером»: cursor = sbss.cursor(dictionary=True,buffered=True)
Например:
1 2 3 4 5 6 7 8 9 10 11 12 |
sql="select * from requests where datediff(now(),lastpost)=%s-3 and statusid=3"; cursor = sbss.cursor(dictionary=True,buffered=True) cursor.execute(sql,[sbss_from_count_days]); row = cursor.fetchone() while row is not None: id=row["id"]; author_id=row["author_id"]; responsible_man=row["responsible_man"]; name=row["name"]; func.putlog("----нашли близкий к просрочке requests :"+str(id)) m_arr=func.GetSBSSManagerInfo(sbss,responsible_man); row = cursor.fetchone() |
Обмен информацией между серверами на PHP
Задача: получить данные с сервера, без использования apache
Решение: воспользуемся сокетами на php, а точнее поднимем свой «веб сервер», единственной функцией которго, будет на любой запрос отвечать требуемыми нам данными
Код сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/usr/local/bin/php <?php function GetCurrentTraf($ent){ $current_speed = `/usr/bin/netstat -nbI $ent | grep 'Link' | awk '{print $8}'`; $current_speed=rtrim($current_speed); return $current_speed; }; $socket = stream_socket_server("tcp://0.0.0.0:800", $errno, $errstr); if (!$socket) { die("$errstr ($errno)\n"); } while ($connect = stream_socket_accept($socket, -1)) { $current_traf = GetCurrentTraf("iя0"); $current_time = time(); $json_data = array ('speed'=>$current_traf,'time'=>$current_time); $jsonen=json_encode($json_data); fwrite($connect, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n $jsonen"); fclose($connect); } fclose($socket); |
Код клиента:
1 2 3 4 |
$json = file_get_contents($external_traff_url); $obj=json_decode($json); $current_speed=$obj->speed; echo "--текущий трафик на интерфейсе : $current_speed (внешний)\n"; |