seems more a problem of the adapter rather than the scheduler itself On Thursday, June 8, 2017 at 5:16:32 AM UTC+2, Richard P wrote: > > I just came across this same issue when using the web2py scheduler for the > first time with an Oracle DB. I spent a good amount of time googling > before finding this post which pointed me to where the problem was. > > I have implemented a work around by creating the below trigger in the > database that will strip out the single quotes before the data is inserted > into the table. > It's not pretty but it works. Now my tasks are running fine. > > create or replace trigger replace_quotes > before insert on SCHEDULER_TASK > for each row > begin > :new.args := replace( :new.args, '''', '' ); > :new.vars := replace( :new.vars, '''', '' ); > end; > / > > > > On Thursday, 8 September 2016 14:27:15 UTC+1, Erwn Ltmann wrote: >> >> Hi Dave, >> >> thx for your response. I'm sorry, but it doesn't helps me. My problem >> concerning the usage of scheduler_task queueing. The web2py scheduler >> transforms automatically the dictionary parameter 'pvars' into a string >> represented JSON in order to save this value as VARCHAR2(512) into the vars >> column of database (oracle) table scheduler_task. So far so good. But IMHO >> with unnecessary quotes at begin and end. The scheduler part of web2py >> tried to read scheduler records and fails because this (damn) extra quotes. >> >> E. >> >> On Thursday, September 8, 2016 at 4:01:37 AM UTC+2, Dave S wrote: >>> >>> >>> >>> On Wednesday, September 7, 2016 at 5:30:49 PM UTC-7, Erwn Ltmann wrote: >>>> >>>> Hi, >>>> >>>> I'm used to create a new task for example: >>>> >>>> scheduler.queue_task( >>>> "a_task", >>>> pvars = dict(csid=row.id, csname=row.name, action=row.action), >>>> ... >>>> ) >>>> >>>> In the past (version 2.10.1), everything was fine. Within the current >>>> version (2.14.6) I have some trouble. See this code for example: >>>> >>>> for row in db(db.scheduler_task.group_name == "agents").select( >>>> db.scheduler_task.ALL): >>>> ... >>>> pvars = json.loads(row.vars) >>>> >>>> ... will raise this exception: >>>> >>>> ... >>>> File "/usr/local/lib/python2.7/json/decoder.py", line 384, in >>>> raw_decode >>>> raise ValueError("No JSON object could be decoded") >>>> ValueError: No JSON object could be decoded >>>> >>>> The reason is a quoted string in column 'VARS' in table >>>> 'SCHEDULER_TASK' (no quotes in web2py's old version 2.10.1). >>>> >>>> A new value for 'VARS' with quotes for example: >>>> >>>> '{"action": "script", "csname": "list", "csid": 121}' >>>> >>>> I can skip the quotes with a trick: >>>> >>>> pvars = json.loads(row.vars[1:-1]) >>>> >>>> But, it is not a general solution. The same problem appears for column >>>> 'ARGS' in scheduler.py when I process the tasks: >>>> >>>> File "/export/home/armadm/dev01/release/web2py/gluon/scheduler.py", >>>> line 311, in executor >>>> args = _decode_list(loads(task.args)) >>>> File "/usr/local/lib/python2.7/json/__init__.py", line 338, in loads >>>> return _default_decoder.decode(s) >>>> File "/usr/local/lib/python2.7/json/decoder.py", line 366, in decode >>>> obj, end = self.raw_decode(s, idx=_w(s, 0).end()) >>>> File "/usr/local/lib/python2.7/json/decoder.py", line 384, in >>>> raw_decode >>>> raise ValueError("No JSON object could be decoded") >>>> ValueError: No JSON object could be decoded >>>> >>>> I use Oracle as database: >>>> >>>> SQL> desc scheduler_task >>>> Name Null? Type >>>> ----------------------------------------- -------- >>>> ---------------------------- >>>> ID NOT NULL NUMBER >>>> ... >>>> ARGS VARCHAR2(512) >>>> VARS VARCHAR2(512) >>>> >>>> Any ideas? >>>> >>>> Thx, Erwn >>>> >>> >>> the vars field is a dict, with the var names as keys and the stuff you >>> want to pass as the values. Both are strings. >>> >>> I use a single var in my code, the name is "where" and the value is a >>> path. So I do >>> if vars["where"]: >>> mywhere = vars["where"] >>> >>> >>> No stripping of quotes is needed to get the path. >>> >>> /dps >>> >>>
-- 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.