Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 6, 2021 10:49:46

ajk-pro
Зарегистрирован: 2020-04-16
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Зависает запрос. Дайте идею, куда смотреть

Ниже код. Упрощен до предела от реального, но тоже не работает.
Если в запрос добавить строку:
sql += “ LIMIT 0, 100”
то 100 строк выдает.
Если больше, то зависает. Всего в базе 365 строк.
Совсем недавно это работало.
Как стоит посмотреть?
Ошибку никакую не дает. Просто по времени не проходит.

[Wed Jan 06 11:39:14 2021] [error] [client 5.42.97.165] Script timed out before returning headers: test.py
[Wed Jan 06 11:44:14 2021] [warn] [client 5.42.97.165] Timeout waiting for output from CGI script /home/virtwww/.../http/

 #!/home/virtwww/.../local/bin/python
# -*- coding: utf-8 -*-
import sys
import pymysql
def master() :
	con = pymysql.connect(host = 'mysql00.1gb.ru',
			user = 'user',
			password = 'password',
			db = 'gb',
			charset='utf8',
			cursorclass=pymysql.cursors.DictCursor
			)	# weather
	tablename = 'weather'
	print ("Content-Type: text/html\n")
	print ("<html><head><title>helloword.py</title></head>\n<body>\n")
	print ("<h3>helloword.py</h3>\n")
	print ("con ")
#	список ЭТ с начала года
	actualyear = "2020-01-01"
	with con:
		cur = con.cursor()
		sql = "SELECT `date`, `average` FROM `everydayset` WHERE `date` >= '%s' "
#		sql += " LIMIT 0, 100"
		try:
			print ('<br>sql:\n<br>\n'+ (sql % actualyear).replace('',''))
			cur.execute(sql % actualyear)
			print(f'<br>sql:<br>{sql % actualyear}')
		except Exception as e:
			print(e.message)
			print ('<br>error\n<br>')
		rows = cur.fetchall()
	print(f"<br>rec {len(rows)}")
#	for row in rows:
#		print(row,'<br>\n')
	print ("</body></html>")	##########################################
master()	##################################################

Спасибо!
Александр

Офлайн

#2 Янв. 6, 2021 11:17:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Зависает запрос. Дайте идею, куда смотреть

Напринтайте вот это на экран

sql % actualyear
полученный вывод скопируйте и выполните в консольном клиенте мускуля, работает?



Офлайн

#3 Янв. 31, 2021 15:20:56

ajk-pro
Зарегистрирован: 2020-04-16
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Зависает запрос. Дайте идею, куда смотреть

Оказалось всё просто. Старый драйвер базы mysql версии 5.1.хх
На библиотеке pymysql он давал 100-120 записей нормально, а дальше склеивался.
На библиотеке mysql.connector вышла ошибка “Bad hahdshske”. По этой ошибке и нашлась проблема.

Всё отлично!

Спасибо!
Александр

Офлайн

#4 Апрель 28, 2021 22:04:06

NikolaiSidorenko
Зарегистрирован: 2021-04-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Зависает запрос. Дайте идею, куда смотреть

Зачастую так бывает, что глобальная проблема решается довольно простым способом

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version