Thank you all for the help.

@Anthony, sorry my ignorance, I was looking in the wrong place (looking in 
the module, asuming the error was triggered there).
Considering your answer and the traceback error, I say "ok, the error is 
triggered from the view, in the line 917".
But how do I know which is that line if the view is compiled?
I've opened the compiled view with an editor, and went to the 917 line. I 
don't know if that make sense, but in that line I've found a closing </div> 
tag... :/

Does it make any sense?


@Dave, I can't use the logger here.
The thing is that the app is actually installed several times (within the 
same web2py installation), and each app instance is serving a website. 
All the websites are running in production, and among all, they serve 
around 150k visits per day. 
So in order to try anything, I have to make the change, push it to the 
repository, and update all the websites.


The error is not a big deal. As you see, there is **a lot** of requests per 
day, and the error appears every 3-4 days.



El martes, 20 de diciembre de 2016, 16:40:47 (UTC-3), Anthony escribió:
>
> The traceback refers to line 971 in the compiled view (not in a module), 
> indicating a call to the URL() function on that line.
>
> On Tuesday, December 20, 2016 at 1:33:18 PM UTC-5, Lisandro wrote:
>>
>> Thanks for the quick answer.
>> Yes, I have automated my app with a function; it sets the app in 
>> mantainance mode (message for the public), updates the code from 
>> repository, compiles the app, restarts uwsgi, and turns off mantainance 
>> mode. 
>> Just in case, I've just checked and it is running compiled.
>>
>>
>> Line 917 is the call to get_url() function.
>> That line is not in the compiled view, but within a module.
>> The view just renders my pagination object, so it just does 
>> {{=pagination.html()}}
>> The pagination object is defined within a module, and the line 917 is the 
>> one calling to get_url().
>>
>> This is a resume of my Pagination object:
>>
>> class Pagination(object):
>>     def __init__(self, cpp, total, pagina, arg_index=0):
>>         # ... initializations
>>
>>     def get_url(self, page):
>>         request = current.request
>>         args = request.args or []
>>         while len(args) < (self.arg_index + 1):
>>             args.append(None)
>>         args[self.arg_index] = page
>>         try:
>>             return URL(args=args, vars=request.vars)
>>         except:
>>             return URL(args=args)
>>
>>     def html(self):
>>         result = ''
>>         for e in range(1, self.paginas + 1):
>>             result += '<a href="%s">%s</a>' % (self.get_url(e), e)
>>         return XML(result)
>>
>>
>>
>> The thing is t hat I've hit the URL with any probable combination of args 
>> and vars, but I cannot reproduce the error.
>>
>> Does the ticket store info about the content of vars and args when the 
>> error triggered?
>> I'm sending tickets2email, so I don't conserve the original ticket, but 
>> If I could find that info in the ticket, I guess I could disable 
>> tickets2email in scheduler and wait for the error to appear again.
>>
>>
>>
>>
>> El martes, 20 de diciembre de 2016, 11:37:44 (UTC-3), Anthony escribió:
>>>
>>> Which line is 971? Are you sure you re-compiled the app after making the 
>>> code change?
>>>
>>> On Tuesday, December 20, 2016 at 6:38:07 AM UTC-5, Lisandro wrote:
>>>>
>>>> Hi there!
>>>> I have a web2py application running, it's been running for a long time, 
>>>> it is a website that serves hundreds of thousands of visits per day, and 
>>>> everything works really good.
>>>> However, everyonce in a while (let's say, every 3-4 days) an error 
>>>> ticket is generated with this traceback:
>>>>
>>>> Traceback (most recent call last): 
>>>> File "/var/www/medios/gluon/restricted.py", line 227, in restricted 
>>>> exec ccode in environment 
>>>> File "applications/website/compiled/views.lista.html.py", line 971, 
>>>> in File "/var/www/medios/gluon/html.py", line 387, in URL other += 
>>>> '?%s' % urllib.urlencode(list_vars) 
>>>> File "/usr/lib/python2.7/urllib.py", line 1332, in urlencode v = 
>>>> quote_plus(str(v)) 
>>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in 
>>>> position 5: ordinal not in range(128)
>>>>
>>>>
>>>> The code portion of my "compiled/views.lista.html.py" involved in the 
>>>> error is the call to this function get_url(page), used to create a 
>>>> paginator in the view:
>>>>
>>>> def get_url(page, arg_index):
>>>>     args = request.args or []
>>>>     if len(args) < (arg_index + 1):
>>>>         args.append(None)
>>>>     args[arg_index] = pagina
>>>>     try:
>>>>         return URL(args=args, vars=request.vars)
>>>>     except:
>>>>         return URL(args=args)
>>>>
>>>>
>>>> As you see, I put a try: except block there, because I thought maybe 
>>>> the request.vars had something to do with it.
>>>> But the error keeps triggering every 3-4 days, and I don't know how to 
>>>> debug it, or where to start.
>>>> Of course, I've hit the application with every possible combination of 
>>>> request.vars and request.args, but I can't trigger the error.
>>>>
>>>> Can I do anything else to avoid the error?
>>>> Thanks in advance!
>>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to