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