рдирдорд╕реНрдХрд╛рд░ !
рдореБрдЭреЗ рдЖрд░рдХреНрдпреВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред
рдпрд╣ рдореЗрд░реЗ рдРрдк рдХреА рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
app/
run.py
project/
__init__.py
clock.py
views.py
worker.py
controllers/
__init__.py
leads_fb.py
рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЕрдкрдирд╛ рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдШрдбрд╝реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рдХреЛрдб рд╣реИ:
from apscheduler.schedulers.background import BackgroundScheduler
from rq import Queue, get_current_job
from rq.job import Job
from worker import conn
from controllers import leads_fb
import logging
import os
q = Queue(connection=conn)
sched = BackgroundScheduler()
def enque_jobs():
info = '1aooEOTBQz1pAW915-JonL3Jh2mhclR5EZTHGotFBe7s||blah blah blah'
job = q.enqueue(leads_fb.prueba, info)
print 'This job is run every 3 seconds.'
if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
sched.add_job(enque_jobs, 'interval', seconds=3)
sched.start()
log = logging.getLogger('apscheduler.executors.default')
# log.setLevel(logging.INFO) # DEBUG
# fmt = logging.Formatter('%(levelname)s:%(name)s:%(message)s')
h = logging.StreamHandler()
# h.setFormatter(fmt)
log.addHandler(h)
рдлрд┐рд░ рдШрдбрд╝реА rq рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬреЛ рдХрд┐ work.py рд╣реИ:
import os
import redis
from rq import Worker, Queue, Connection
listen = ['high', 'default', 'low']
redis_url = os.getenv('REDISTOGO_URL', 'redis://localhost:6379')
conn = redis.from_url(redis_url)
if __name__ == '__main__':
with Connection(conn):
worker = Worker(map(Queue, listen))
worker.work()
рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ рдирд┐рдпрдВрддреНрд░рдХ/leads_fb.py рд╣реИ:
from wksh import init_wksh, get_last_row, write_in_cell
def prueba(info):
print 'aaaaa'
info = info.split('||')
id_client = info[0]
str_prueba = info[1]
wksh = init_wksh(id_client)
print wksh
row = get_last_row(wksh)
write_in_cell(wksh,'A'+str(row),str_prueba)
print 'funciona ' + str(row)
рдЬрдм рдореИрдВ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ run.py рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ: ImportError: project.controllers.leads_fb рдирд╛рдо рдХрд╛ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ
рдореЗрд░реА run.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рдХреЛрдб рд╣реИ:
from project import app
from project import worker
from project import clock
if __name__ == "__main__":
app.run(debug=True,host='127.0.0.1', port=1234)
рдФрд░ рдореЗрд░реА рдРрдк/рдкреНрд░реЛрдЬреЗрдХреНрдЯ/__init__.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рд╣реИ
from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
from . import views
from . import worker
from . import clock
рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП!! рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдЕрдиреНрдп рдереНрд░реЗрдб рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╛рдпрдердирдкреИрде рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдореЗрд░реЗ рдЖрд░рдХреНрдпреВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред @selwin
рдореИрдВ рдЕрдкрдиреА рд╡рд░реНрдХрд░.py рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдкрде рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдБ? рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдореИрдВ рд╡рд░реНрдХрд░ рдХреЛ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди 'rqworker' рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдРрдк рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдХрд░.py рдлрд╝рд╛рдЗрд▓ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрдБ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗ рдФрд░ рд╣рд░реЛрдХреВ рдореЗрдВ рднреА рддреИрдирд╛рдд рд╣реЛ?
рдореИрдВ рдЕрдкрдиреА рд╡рд░реНрдХрд░.py рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдкрде рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдБ? рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдореИрдВ рд╡рд░реНрдХрд░ рдХреЛ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди 'rqworker' рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдРрдк рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдХрд░.py рдлрд╝рд╛рдЗрд▓ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ/рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрдБ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗ рдФрд░ рд╣рд░реЛрдХреВ рдореЗрдВ рднреА рддреИрдирд╛рдд рд╣реЛ? @nvie рдореИрдВрдиреЗ рдЖрд░рдХреНрдпреВ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рдЦреЛрдЬ рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ! рдХреГрдкрдпрд╛ рдорджрдж рдХреАрдЬрд┐рдПред
рдЖрдк rq worker
рдХрдорд╛рдВрдб рдХреЛ --path
рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@selwin рдореИрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ: rq рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ --рдкрде рдкрд░рд┐рдпреЛрдЬрдирд╛/
рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ?
@mateocam рдпрд╣ рд╕рд┐рд░реНрдл рдирд┐рдпрдорд┐рдд рдЕрдЬрдЧрд░ sys рдкрде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рд╕рд╛рдордЧреНрд░реА рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рд╕рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИ рдпрд╛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВ, рдХрд╣реАрдВ рдЬреАрдердм рдкрд░, рддрд╛рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХреЗ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@mateocam рдпрд╣ рд╕рд┐рд░реНрдл рдирд┐рдпрдорд┐рдд рдЕрдЬрдЧрд░ sys рдкрде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рд╕рд╛рдордЧреНрд░реА рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рд╕рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реИ рдпрд╛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВ, рдХрд╣реАрдВ рдЬреАрдердм рдкрд░, рддрд╛рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХреЗ