У меня есть проект Django, MySQL DB находится на отдельном хосте, соединенном TCP.
У меня есть этот скрипт: < /p>
#!/usr/bin/env python
from asyncio import sleep, run
from django import setup as django_setup
django_setup()
from django.db import connections
from django.contrib.auth.models import User
from django.db import OperationalError, close_old_connections
async def test():
while True:
try:
objs=User.objects.all()
print(await objs.acount())
except KeyboardInterrupt:
break
except OperationalError as e: # Need to reconnect
print(f'main(): OperationalError: {e}')
#raise
# (1053, 'Server shutdown in progress')
# (2013, 'Lost connection to MySQL server during query')
# (2006, 'Server has gone away')
code=e.args[0]
if code in {1053, 2006, 2013, 2026}: # Only when it's restarting, and once
#await sync_to_async(conn.connect)()
close_old_connections()
print('After reconnect')
#reconnect()
else:
#breakpoint()
pass
except Exception as e:
print(f'in _round() {type(e)}')
else:
pass
#breakpoint()
print('Sleeping')
await sleep(5)
try:
run(test())
except KeyboardInterrupt:
raise
except:
print('In run(main())')
breakpoint()
pass
< /code>
Затем я использую Tcpkill для прерывания соединения: < /p>
tcpkill 'dst port 3306'
< /code>
Как мне указать Джанго воссоединиться? Я не делаю этого автоматически, close_old_connection не работает, вывод подобен следующим образом: < /p>
3
Sleeping
3
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
< /code>
При рассмотрении кода я вижу, что он порождает объект курсора из объекта соединения, а затем не работает, а затем закрыт, в то время как, вероятно, объект подключения остается неповрежденным и продолжает давать непригодные курсоры. Я пробовал connection.connect (), но это не сработает, потому что код асинхрон.
Подробнее здесь: https://stackoverflow.com/questions/794 ... on-is-lost
Джанго воссоединяется с БД, когда соединение проиграно ⇐ MySql
Форум по Mysql
-
Anonymous
1739554565
Anonymous
У меня есть проект Django, MySQL DB находится на отдельном хосте, соединенном TCP.
У меня есть этот скрипт: < /p>
#!/usr/bin/env python
from asyncio import sleep, run
from django import setup as django_setup
django_setup()
from django.db import connections
from django.contrib.auth.models import User
from django.db import OperationalError, close_old_connections
async def test():
while True:
try:
objs=User.objects.all()
print(await objs.acount())
except KeyboardInterrupt:
break
except OperationalError as e: # Need to reconnect
print(f'main(): OperationalError: {e}')
#raise
# (1053, 'Server shutdown in progress')
# (2013, 'Lost connection to MySQL server during query')
# (2006, 'Server has gone away')
code=e.args[0]
if code in {1053, 2006, 2013, 2026}: # Only when it's restarting, and once
#await sync_to_async(conn.connect)()
close_old_connections()
print('After reconnect')
#reconnect()
else:
#breakpoint()
pass
except Exception as e:
print(f'in _round() {type(e)}')
else:
pass
#breakpoint()
print('Sleeping')
await sleep(5)
try:
run(test())
except KeyboardInterrupt:
raise
except:
print('In run(main())')
breakpoint()
pass
< /code>
Затем я использую Tcpkill для прерывания соединения: < /p>
tcpkill 'dst port 3306'
< /code>
Как мне указать Джанго воссоединиться? Я не делаю этого автоматически, close_old_connection не работает, вывод подобен следующим образом: < /p>
3
Sleeping
3
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
main(): OperationalError: (2013, 'Lost connection to MySQL server during query')
After reconnect
Sleeping
< /code>
При рассмотрении кода я вижу, что он порождает объект курсора из объекта соединения, а затем не работает, а затем закрыт, в то время как, вероятно, объект подключения остается неповрежденным и продолжает давать непригодные курсоры. Я пробовал connection.connect (), но это не сработает, потому что код асинхрон.
Подробнее здесь: [url]https://stackoverflow.com/questions/79440154/django-reconnect-to-db-when-connection-is-lost[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия