I'll  move queue_task() in controller, but the fact is that (till now) I 
always used queue_task() in model with no issues, and actually there is no 
request other then the ones I trigger visiting my site (site is demo, no 
"audience")...

On Tuesday, June 4, 2013 9:13:54 PM UTC+2, Niphlod wrote:
>
> that's probably because your code queueing the task is inside models, that 
> are executed for every request.
> Of course, models are executed also in the "fake" environment that 
> executes the task (so you have at hand, e.g., the database).
> Move the "queue_task()" to a controller and queue it only one time, it'll 
> work fine.
>
> On Tuesday, June 4, 2013 8:59:45 PM UTC+2, operE Aperte wrote:
>>
>> Hi,
>>
>> I use scheduler from few months with - basically - no big issues. In the 
>> last days I saw a strange behaviour: tasks queued multiple time when in my 
>> shceduler.py I have only one scheduler.queue_task instruction. At first I 
>> thougth of multiple scheduler instances thrown by cron jobs (I even don't 
>> know if this is possible), but I checked and I have only one scheduler 
>> instance running.
>>  
>> So I tested this:
>>
>>
>> db.py:
>> db = 
>> DAL('postgres://user:[email protected]/oadb',pool_size=1,check_reserved=['all'],
>>  
>> migrate=True)
>>
>> scheduler.py:
>> db.define_table('testtable',Field('field1','integer'),migrate=True)
>>
>>
>> def test_insert(tablename,value):
>>     db[tablename].insert(field1=value)
>>     db.commit()
>>     return True
>>
>>
>> from gluon.scheduler import Scheduler
>> scheduler = Scheduler(db)
>>
>>
>> scheduler.queue_task('test_insert',
>>                     pargs=["testtable",1],
>>                     task_name='insert test',
>>                     group_name='main',
>>                     application_name='scrapers'
>>                     )
>>
>> When I run from the shell prompt this: 
>> /usr/local/bin/python $HOME/webapps/oawa/web2py/web2py.py 
>> --password='<recycle>' --scheduler=scrapers -D 0
>>  I got this log:
>>
>> web2py Web Framework
>> Created by Massimo Di Pierro, Copyright 2007-2013
>> Version 2.4.7-stable+timestamp.2013.05.24.17.48.47
>> Database drivers available: SQLite(sqlite3), MySQL(pymysql), 
>> MySQL(MySQLdb), PostgreSQL(psycopg2), PostgreSQL(pg8000), MSSQL(pyodbc), 
>> DB2(pyodbc), Teradata(pyodbc), Ingres(pyodbc), IMAP(imaplib)
>> starting single-scheduler for "scrapers"...
>> DEBUG:web2py.dal:Your database version does not support the JSON data 
>> type (using TEXT instead)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:defining tables 
>> (migrate=True)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:thread building own 
>> DAL object
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.dal:Your database version does not support the JSON data 
>> type (using TEXT instead)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:defining tables 
>> (migrate=False)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    freeing workers 
>> that have not sent heartbeat
>> INFO:web2py.scheduler.web394.webfaction.com#385289:TICKER: I'm a ticker
>> INFO:web2py.scheduler.web394.webfaction.com#385289:nothing to do
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> INFO:web2py.scheduler.web394.webfaction.com#385289:nothing to do
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> INFO:web2py.scheduler.web394.webfaction.com#385289:nothing to do
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> INFO:web2py.scheduler.web394.webfaction.com#385289:nothing to do
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> INFO:web2py.scheduler.web394.webfaction.com#385289:nothing to do
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    freeing workers 
>> that have not sent heartbeat
>> INFO:web2py.scheduler.web394.webfaction.com#385289:TICKER: I'm a ticker
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:Assigning tasks...
>> INFO:web2py.scheduler.web394.webfaction.com#385289:TICKER: workers are 1
>> INFO:web2py.scheduler.web394.webfaction.com#385289:TICKER: tasks are 50
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:Tasks assigned...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:sleeping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:........recordingheartbeat
>>  (ACTIVE)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165100
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165100 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165110
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165110 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165113
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165113 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165109
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165109 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165114
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165114 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165112
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> INFO:web2py.scheduler.web394.webfaction.com#385289:new task 165112 
>> "insert test" scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: new task allocated: 
>> scrapers.test_insert
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   task starting
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    task started
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new task report: 
>> COMPLETED
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   result: true
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:  task completed or 
>> failed
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289: recording task 
>> report in db (COMPLETED)
>> INFO:web2py.scheduler.web394.webfaction.com#385289:task completed 
>> (COMPLETED)
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:looping...
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:   work to do 165107
>> DEBUG:web2py.scheduler.web394.webfaction.com#385289:    new 
>> scheduler_run record
>> ...
>> keeps logging this way thousands of time, filling scheduler_task table 
>> with more the 160.000 rows.
>>
>> This does not happen if I comment db.commit() line, in this case there is 
>> (of course) no data insertion in testtable, the task is completed but there 
>> is only 1 task in scheduler_task table.
>>
>> My setup:
>> 2.4.7-stable+timestamp.2013.05.24.17.48.47
>> (Running on Apache/2.2.17 (Unix) mod_wsgi/3.3 Python/2.7.5)
>> PostgreSQL 9.1.9
>>
>> hosting: webfaction.com
>>
>> I really don't know what it's not working properly.
>>
>>
>>
>>

-- 

--- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to