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.