import asyncio
async def exc():
print(1 / 0)
async def main():
task = asyncio.create_task(exc())
try:
await asyncio.gather(task)
except ZeroDivisionError as ex:
print(f"Ошибка {ex} обработана")
asyncio.run(main())
await
, а остановиться только на их создании (task = asyncio.create_task(waste_time()
), то вывод вообще будет таким: Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
0.0021376609802246094
await asyncio.sleep(2)
? старт
?await
, а остановиться только на их создании (task = asyncio.create_task(waste_time()
), то вывод вообще будет таким:Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
0.0021376609802246094
await asyncio.sleep(2)
?await
?await asyncio.sleep(2)
работает таким образом: sleep()
, там она стопится, т.е. входит в состояние ожидания результата, контроль выполнения возвращается в функцию waste_time()
, откуда и была вызвана sleep()
, а оттуда обратно в main()
и далее в цикле он продолжает делать то же самое (в waste_time() - в sleep() - обратно в waste_time() - обратно в main()). По прошествии 2 секунд, внутренний механизм asyncio
мониторинга состояния корутин уведомляет событийный цикл, что первая корутина получила ответ (иначе говоря, завершила свою работу), событийный цикл после этого передает контроль выполнения обратно в функцию, откуда была вызвана первая корутина, т.е. в waste_time()
,, она продолжает свое выполнение и выводит на печать "End work!"
. Сразу за ней событийный цикл получил такие же уведомления от остальных корутин (через механизм мониторинга, само собой), ибо они тоже закончили свое выполнение (все почти одновременно), и с ними повторяется такой же процесс. Поэтому после первой корутины мы также видим подряд вывод всех остальных - "End work!"
.await
, в цикле в функции main()
, из-за того что не находится в таске - не участвует в очереди, поэтому она просто встает в ожидание результата корутины, вместо того, чтобы переключится на другие.lang="python">yield from
, модуль selectors
, делегирующие генераторы и подгенераторы), потом библиотеку asyncio
. Ощущение, будто я упускаю что-то очевидное.Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
Start work...
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
старт
End work!
финиш
2.0058696269989014
python3 manage.py makemigrations
работает, а через django-admin makemigrations
- нет, все те же ошибки. Это что такое? django.core.exceptions.ImproperlyConfigured
, только меняются глобальные переменные, например:django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
CACHES
теперь USE_I18N
migrate
после создания начальной миграции с помощью makemigrations
, тем самым создал зависимости в базе и просто так изменить или удалить запись django_content_type
или django_migrations
не получится.
data:image
, но использовалxlink:href
и у меня высвечивалось ошибка типа "invalid image source" вместо SVG. Но сейчас я использовал простоhref
и все заработало. Спасибо вам.Но вы говорите, что анимация работать не будет, тем не менее, здесь она работает - https://github.com/vaaski/vaaski/tree/master