\r\n
, вместо \r
будет снова перевод строки \n
. Примечание в документации. https
. Об этом явно указано в документации. Либо вам нужно настроить поддержку SSL-соединений для http.server с самоподписанными сертификатом, либо воспользоваться готовыми решениями. users
как по int
-ключу, так и str
-ключу. Решение: перейти к одной нотации везде.import json
d = {123: 'a', '123': 'b'}
json.dumps(d) # '{"123": "a", "123": "b"}'
Начало +-> Вопрос 1 +-> Вопрос 2 +-> Вопрос 3 +-> Конец
^ + ^ + ^ +
+---+ +---+ +---+
Начало +-> Вопрос 1 +-> Вопрос 2 +-> Конец
+ ^
+-> Вопрос 3 +-+
print("Получено медиа вложение\n Тип => " + event.attachments['attach1_type'])
event.attachments
есть поле attach1, которое можно использовать в методе photos.getById:photo_id = event.attachments['attach1']
photo_info = vk_sess.photos.get_by_id(photos=photo_id)
photo_urls = {size['type']: size['url'] for size in photo_info['sizes']}
Тогда по event.message_id получаете информацию с помощью метода message.getById, в котором должно быть поле attachments. Описание структуры поля https://vk.com/dev/objects/attachments_m и для photo https://vk.com/dev/objects/photo.
var_X
и по значениям val_X
, то создайте ещё один словарь для хранения обратного отношения val_X -> var_X
.var_dict = {val: var for var, val in mydict.items()}
...
var_dict['val_0'] # returns var_0
mydict # словарь из файла `файл.txt`
stringList # "другой" словарь
dict_for_keyboard = {key: stringList[key] for key in mydict.values()}
...
myMarkup = types.InlineKeyboardMarkup() # опечатка prMarkup?
for key, value in dict_for_keyboard.items():
myMarkup.add(types.InlineKeyboardButton(text=value + VAR ,callback_data=key ))
pool.apply_async
. Это плохая практика, потому что при выполнении кода в дочерних процессах могут быть исключения, которые стоит обрабатывать в основном процессе. Почитайте дополнительно документацию. Пример:import multiprocessing
def f():
raise ValueError()
with multiprocessing.Pool() as pool:
for _ in range(10):
pool.apply_async(f) # no errors
with multiprocessing.Pool() as pool:
for _ in range(10):
result = pool.apply_async(f)
result.get(timeout=1) # raise ValueError
MongoClient
или запросы .insert_one|.find_and_modify
бросает исключение, связанное с превышением какого-то таймаута (посмотрите необязательные аргументы mongo_client и исключения) from tqdm import tqdm
...
for div in tqdm(divs):
# обработка
from tqdm import tqdm
base_urls = [...]
for base_url in tqdm(base_urls):
hh_parse(base_url, headers)
bytes
и перекодировать в Unicode. Предполагаю, что у вас строки в кодировке Windows-1252. Другие кодировкиdef __get_string(self, data):
...
return s.encode('cp1252').decode(), data[i + 1:]
asyncio.open_connection
порождает вызов socket.getaddrinfo
в loop._default_executor
, который в 3.7 по-умолчанию является ThreadPoolExecutor
. Максимальное число воркеров в пуле по-умолчанию определяется max_workers = (os.cpu_count() or 1) * 5
(ссылка). min(32, (os.cpu_count() or 1) + 4)
, коммит.import concurrent.futures
...
loop = asyncio.get_event_loop()
loop.set_default_executor(concurrent.futures.ThreadPoolExecutor(max_workers=4))
...