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.

Reply via email to