UnicodeDecodeError issue

Ferrous Cranus nikos at superhost.gr
Sun Sep 1 12:10:50 EDT 2013


Στις 1/9/2013 6:36 μμ, ο/η Dave Angel έγραψε:
> On 1/9/2013 10:08, Ferrous Cranus wrote:
>
>     <snip>
>> Here is it:
>>
>>
>> errout = open( '/tmp/err.out', 'w' )		# opens and truncates the error
>> output file
>> try:
>> 	gi = pygeoip.GeoIP('/usr/local/share/GeoIPCity.dat')
>> 	city = gi.time_zone_by_addr( os.environ['REMOTE_ADDR'] ) or
>> gi.time_zone_by_addr( os.environ['HTTP_CF_CONNECTING_IP'] )
>> 	host = socket.gethostbyaddr( os.environ['REMOTE_ADDR'] )[0] or
>> socket.gethostbyaddr( os.environ['HTTP_CF_CONNECTING_IP'] )[0] or "Proxy
>> Detected"
>> except Exception as e:
>> 	print( "Xyzzy exception-", repr( sys.exc_info() ), file=errout )
>>       errout.flush()
>>
>> sys.exit(0)
>>
>> and the output of error file is:
>>
>>
>> nikos at superhost.gr [~]# cat /tmp/err.out
>> UnicodeDecodeError('utf-8', b'\xb6\xe3\xed\xf9\xf3\xf4\xef
>> \xfc\xed\xef\xec\xe1 \xf3\xf5\xf3\xf4\xde\xec\xe1\xf4\xef\xf2', 0, 1,
>> 'invalid start byte')
>>
>
> Nope.  The label  "Xyzzy exception" is not in that file, so that's not
> the file you created in this run.  Further, if that line existed before,
> it would have been wiped out by the open with mode "w".
>
> i suggest you add yet another write to that file, immediately after
> opening it:
>
> errout = open( '/tmp/err.out', 'w' )		# opens and truncates the error
> print("starting run", file=errorout)
> errout.flush()
>
> Until you can reliably examine the same file that was logging your
> errors, you're just spinning your wheels.  you might even want to write
> the time to the file, so that you can tell whether it was now, or 2 days
> ago that the run was made.
>
>


I tried it and it printed nothing.
But suddenly thw ebpage sttaed to run and i get n invalid byte entried 
and no weird messge files.py is working as expcted.
what on earht?

Now i ahve thso error:

# 
=================================================================================================================
# DATABASE INSERTS - do not increment the counter if a Cookie is set to 
the visitors browser already
# 
=================================================================================================================
if( not vip and re.search( 
r'(msn|gator|amazon|yandex|reverse|cloudflare|who|fetch|barracuda|spider|google|crawl|pingdom)', 
host ) is None ):

	print( "i'm in and data is: ", host )
	try:
		#find the needed counter for the page URL
		if os.path.exists( path + page ) or os.path.exists( cgi_path + page ):
			cur.execute('''SELECT ID FROM counters WHERE url = %s''', page )
			data = cur.fetchone()		#URL is unique, so should only be one

		if not data:
			#first time for page; primary key is automatic, hit is defaulted
			cur.execute('''INSERT INTO counters (url) VALUES (%s)''', page )
			cID = cur.lastrowid        #get the primary key value of the new record
		else:
			#found the page, save primary key and use it to issue hit UPDATE
			cID = data[0]
			cur.execute('''UPDATE counters SET hits = hits + 1 WHERE ID = %s''', 
cID )

		#find the visitor record for the (saved) cID and current host
		cur.execute('''SELECT * FROM visitors WHERE counterID = %s and host = 
%s''', (cID, host) )
		data = cur.fetchone()        #cID&host are unique
			
		if not data:
			#first time for this host on this page, create new record
			cur.execute('''INSERT INTO visitors (counterID, host, city, useros, 
browser, lastvisit) VALUES (%s, %s, %s, %s, %s, %s)''', (cID, host, 
city, useros, browser, date) )
		else:
			#found the page, save its primary key for later use
			vID = data[0]
			#UPDATE record using retrieved vID
			cur.execute('''UPDATE visitors SET city = %s, useros = %s, browser = 
%s, hits = hits + 1, lastvisit = %s
									WHERE counterID = %s and host = %s''', (city, useros, browser, 
date, vID, host) )

		con.commit()		#if we made it here, the transaction is complete
		
	except pymysql.ProgrammingError as e:
		print( repr(e) )
		con.rollback()		#something failed, rollback the entire transaction
		sys.exit(0)


i get no counter increment when visitors visit my webpage.
What on eart is going on?

How the previous error with the invalid byte somehtign got solved?

-- 
Webhost <http://superhost.gr>



More information about the Python-list mailing list