This is my routes.py:

# -*- coding: utf-8 -*-

# creates a dictionary that will map each domain with its own app,
# based on the content of a text file called "domains_apps", and also
# a list of all the apps installed
domains = {}
apps = []
_archivo = open('domains_apps', 'r')
_lineas = _archivo.readlines()
_archivo.close()
for _linea in _lineas:
    domain, app = _linea.strip().split('!')
    domains[domain] = app
    if not app in apps:
        apps.append(app)


routers = dict(\
  BASE = dict(\
    default_controller = 'default', \
    default_function = 'index', \
    domains = domains, \
    root_static = ['robots.txt'], \
    map_static = True, \
    exclusive_domain = True, \
  )\
)


routes_onerror = []
for app in apps:
    for code in ['403', '404', '500', '503']:
        routes_onerror.append((r'%s/%s' %(app, code), r'/%s/static/%s.html' 
%(app, code)))
    routes_onerror.append((r'%s/*' %app, r'/%s/static/500.html' %app))


The file "domains_apps" looks like this:

adn979.com!adn
panel.adn979.com!adn_panel
blogdemedios.com.ar!blogmedios
panel.blogdemedios.com.ar!blogmedios_panel
demo.medios.com.ar!demo
panel.demo.medios.com.ar!demo_panel
diarioprimicia.com.ar!diarioprimicia
panel.diarioprimicia.com.ar!diarioprimicia_panel


Notice each domain has its own app associated. 
This web2py instance is running ~600 apps (that is, 600 copies of the same 
app).

Do you see something odd here?
In the meantime, I'll verify that all the apps referened in "domains_apps" 
file are in deed installed apps.


El lunes, 3 de septiembre de 2018, 11:40:22 (UTC-3), Anthony escribió:
>
> What does your routes.py file look like?
>
> On Monday, September 3, 2018 at 10:25:22 AM UTC-4, Lisandro wrote:
>>
>> This problem is getting weirder.
>>
>> I've found that passing integer numbers as args to URL() helper isn't a 
>> problem for web2py. 
>> I could successfully run some examples using integer and long integers as 
>> URL args, and it always works ok. 
>> In fact, as I stated before, my application uses URL in that way since a 
>> long time ago, with no errors.
>> Even more: in the apps where the code fails, it only fails when it is run 
>> from the scheduler, but it works ok if it is run from the controllers.
>> But, just to remember, it doesn't fail in all the apps, only in some of 
>> them. But the apps are all the same, it's the same app installed several 
>> times.
>>
>>
>> A quick resume:
>>
>> This sentence:
>> URL('default', f=f, args=[contenido.id, contenido.slug], extension='', 
>> scheme=True, host=current.CONFIG.dominio)
>>
>>
>>  * from a controller, it always runs ok.
>>  * from the scheduler, it fails in some applications.
>>
>> The error points to gluon/rewrite.py:
>>
>> File "applications/pescaregional/modules/virtual_methods.py", line 248, 
>> in contenido_url return URL(c='default', f=f, args=[contenido.id, 
>> contenido.slug], extension='', scheme=True,host=current.CONFIG.dominio) 
>> if f else None 
>> File "/var/www/medios/gluon/html.py", line 391, in URL args, other, 
>> scheme, host, port, language=language) 
>> File "/var/www/medios/gluon/rewrite.py", line 197, in url_out function, 
>> args, other, scheme, host, port, language) 
>> File "/var/www/medios/gluon/rewrite.py", line 1366, in map_url_out return 
>> map.acf() 
>> File "/var/www/medios/gluon/rewrite.py", line 1292, in acf self.omit_acf
>> () # try to omit a/c/f 
>> File "/var/www/medios/gluon/rewrite.py", line 1241, in omit_acf if self.
>> args[0] in self.functions or self.args[0] in self.controllers or self.
>> args[0] in applications: TypeError: 'in ' requires stringas left operand, 
>> not long
>>
>>
>> I'm a bit lost.
>> Where else should I look?
>>
>>
>> El lunes, 3 de septiembre de 2018, 1:45:49 (UTC-3), Lisandro escribió:
>>>
>>> Thanks for that fast response.
>>> If the cause of the problem is passing "contenido.id" as int, then the 
>>> error is even more weird, because my app uses URL like that in several 
>>> situations, for example:
>>>
>>> URL('contenido', 'editar', args=contenido.id)
>>> URL('categoria', 'editar', args=categoria.id)
>>> URL('default', 'index', args=[categoria.id, page_number])
>>>
>>>
>>> Now that I think it, the error that I reported happens within the 
>>> scheduler environment.
>>> Could that difference be the reason? Well, even in that case, it 
>>> wouldn't explain why it works ok in other apps.
>>>
>>>
>>>
>>>
>>> El lunes, 3 de septiembre de 2018, 1:25:19 (UTC-3), fiubarc escribió:
>>>>
>>>> Hello, 
>>>>
>>>> I think it's more a matter of python language, contenido.id is long type 
>>>> then self.args[0] in 'any string'  raise an exception because, as the 
>>>> message says :
>>>>
>>>> 'in ' requires string as left operand, not long
>>>>
>>>> You can do args=['%s' % contenido.id, .... or args=[str(contenido.id), 
>>>> .... 
>>>>
>>>> Dont know why in others installed apps works, is really weird
>>>>
>>>>
>>>>
>>>> El lunes, 3 de septiembre de 2018, 0:54:32 (UTC-3), Lisandro escribió:
>>>>>
>>>>> I have the same app installed several times within a web2py instance 
>>>>> (running version 2.16.1-stable+timestamp.2017.11.14.05.54.25).
>>>>>
>>>>> In some of them, this sentence:
>>>>>
>>>>> URL(c='default', f=f, args=[contenido.id, contenido.slug], extension=
>>>>> '', scheme=True, host=current.CONFIG.dominio)
>>>>>
>>>>> ... throws this traceback error:
>>>>>
>>>>> Traceback (most recent call last): 
>>>>> File "/var/www/medios/gluon/scheduler.py", line 501, in executor 
>>>>> result = dumps(_function(*args, **vars)) 
>>>>> File "applications/pescaregional/compiled/models.db.py", line 519, in 
>>>>> newsletter 
>>>>> File "applications/pescaregional/modules/globales.py", line 938, in 
>>>>> enviar_newsletter 'url_noticia': noticia.url() + utm_vars, 
>>>>> File "/var/www/medios/gluon/packages/dal/pydal/objects.py", line 2407, 
>>>>> in __call__ return self.method(self.row, *args, **kwargs) 
>>>>> File "applications/pescaregional/compiled/models.db.py", line 295, in 
>>>>> File "applications/pescaregional/modules/virtual_methods.py", line 248
>>>>> , in contenido_url return URL(c='default', f=f, args=[contenido.id, 
>>>>> contenido.slug], extension='', scheme=True, host=current.CONFIG.
>>>>> dominio) if f else None 
>>>>> File "/var/www/medios/gluon/html.py", line 391, in URL args, other, 
>>>>> scheme, host, port, language=language) 
>>>>> File "/var/www/medios/gluon/rewrite.py", line 197, in url_out function
>>>>> , args, other, scheme, host, port, language) 
>>>>> File "/var/www/medios/gluon/rewrite.py", line 1366, in map_url_out 
>>>>> return map.acf() 
>>>>> File "/var/www/medios/gluon/rewrite.py", line 1292, in acf self.
>>>>> omit_acf() # try to omit a/c/f 
>>>>> File "/var/www/medios/gluon/rewrite.py", line 1241, in omit_acf if 
>>>>> self.args[0] in self.functions or self.args[0] in self.controllers or 
>>>>> self.args[0] in applications: TypeError: 'in ' requires string as 
>>>>> left operand, not long
>>>>>
>>>>>
>>>>>
>>>>> The problem is solved changing the sentence with this:
>>>>>
>>>>> URL(c='default', f=f, args=['%s' % contenido.id, '%s' % contenido.slug
>>>>> ], extension='', scheme=True, host=current.CONFIG.dominio)
>>>>>
>>>>> ... notice that the args are converted to strings.
>>>>>
>>>>> But the weird part is that *the error only happens in some of the 
>>>>> installed apps; and, remember, it's the exact same app installed several 
>>>>> times*.
>>>>>
>>>>> First I thought it had something to do with the values stored at 
>>>>> "contenido", which is a row from a table. But it happens with any row.
>>>>>
>>>>> I'm using PostgreSQL 9.3. I've checked the databases' enconding and 
>>>>> they all have the same one. I also checked the "contenido" table 
>>>>> definition 
>>>>> in a couple of dbs (one corresponding to an app that presents the error, 
>>>>> and other that doesn't), and they are exactly the same.
>>>>>
>>>>> What could be the difference that makes gluon/rewrite.py throw the 
>>>>> error in some of the apps?
>>>>>
>>>>

-- 
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