UnicodeDecodeError issue

Ferrous Cranus nikos at superhost.gr
Sun Sep 1 18:23:48 EDT 2013


Στις 1/9/2013 7:10 μμ, ο/η Ferrous Cranus έγραψε:
> Στις 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?
>
i still wonder how come the invalid byte messge dissapeared

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



More information about the Python-list mailing list