μ¬λ³΄μΈμ !
rq μμ μμ λ¬Έμ κ° μμ΅λλ€.
μ΄κ²μ λ΄ μ±μ ꡬ쑰μ λλ€.
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)
κ·Έλ° λ€μ clockμ worker.pyμΈ rq μμ μλ‘ μμ μ λκΈ°μ΄μ λ£μ΅λλ€.
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()
λκΈ°μ΄μ μλ μμ μ΄ μ€νλλ ν¨μλ controllers/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: No module named 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)
λ΄ app/project/__init__.py νμΌμλ λ€μμ΄ μμ΅λλ€.
from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
from . import views
from . import worker
from . import clock
λμμ£ΌμΈμ!! λλ μΌμ£ΌμΌ λμ μ΄κ²μ κ°ν μμκ³ μ΄κ²μ κ³ μΉ μ μμ΅λλ€. λλ λ€λ₯Έ μ€λ λ λ¬Έμ λ₯Ό μ½μκ³ λ΄ λͺ¨λ λλ ν 리λ₯Ό λ΄ rq μμ μλ‘ κ°λ¦¬ν€λ PYTHONPATHμ κ΄λ ¨μ΄ μλ€λ κ²μ μ΄ν΄νμ§λ§ μ΄κ²μ ꡬννλ λ°©λ²μ λͺ¨λ¦ λλ€. @selwin
μ΄λ»κ² λ΄ worker.py νμΌμ λν κ°μ Έμ€κΈ° κ²½λ‘λ₯Ό μΆκ°ν μ μμ΅λκΉ? λλ ν μ€νΈνκ³ 'rqworker' λͺ λ Ήμ€μ μ¬μ©νμ¬ λ£¨νΈ λλ ν 리μμ μμ μλ₯Ό μμνλ©΄ μ λλ‘ μλν©λλ€. λ΄ μ±μ worker.py νμΌμ΄ λ£¨νΈ λλ ν°λ¦¬μ μλ€κ³ μκ°νμ§λ§ μ€μ λ‘λ λ£¨νΈ λλ ν°λ¦¬ λ΄λΆμ project/μ μμ΅λλ€. λ‘컬μμ μλνκ³ Herokuμλ λ°°ν¬λλλ‘ μ§μ νλ λ°©λ²κ³Ό μμΉλ 무μμ λκΉ?
μ΄λ»κ² λ΄ worker.py νμΌμ λν κ°μ Έμ€κΈ° κ²½λ‘λ₯Ό μΆκ°ν μ μμ΅λκΉ? λλ ν μ€νΈνκ³ 'rqworker' λͺ λ Ήμ€μ μ¬μ©νμ¬ λ£¨νΈ λλ ν 리μμ μμ μλ₯Ό μμνλ©΄ μ λλ‘ μλν©λλ€. λ΄ μ±μ worker.py νμΌμ΄ λ£¨νΈ λλ ν°λ¦¬μ μλ€κ³ μκ°νμ§λ§ μ€μ λ‘λ λ£¨νΈ λλ ν°λ¦¬ λ΄λΆμ project/μ μμ΅λλ€. λ‘컬μμ μλνκ³ Herokuμλ λ°°ν¬λλλ‘ μ§μ νλ λ°©λ²κ³Ό μμΉλ 무μμ λκΉ? @nvie rqμ λ¬Έμλ₯Ό κ²μ
--path
μΈμλ₯Ό μ¬μ©νμ¬ rq worker
λͺ
λ Ήμ νΈμΆν μ μμ΅λλ€.
@selwin λ€μκ³Ό κ°μ΄ μμ
μλ₯Ό νΈμΆν©λλ€. rq worker --path project/
μ¬μ ν μλνμ§ μμ΅λλ€. λ΄ νλ‘μ νΈμ λ£¨νΈ λλ ν°λ¦¬μμ μμ
μλ₯Ό νΈμΆν©λλ€. λ΄κ° 무μμ λμΉκ³ μμ΅λκΉ?
@mateocam κ·Έκ²μ λ¨μ§ μΌλ° νμ΄μ¬ sys κ²½λ‘ λͺ¨λ κ°μ Έμ€κΈ° νλͺ©μ
λλ€. μ¬λ°λ₯Έ λλ ν 리μμ μ€ννκ±°λ ν¨ν€μ§λ₯Ό μμ€ν
λΌμ΄λΈλ¬λ¦¬μ μ€μΉνκΈ°λ§ νλ©΄ λ©λλ€.
μμ
μλ₯Ό μμνλ λ¨μΌ bash μ€ν¬λ¦½νΈμ ν¨κ» μμ μ½λλ₯Ό githubμ μ΄λκ°μ λ£μ΄ λ€λ₯Έ μ¬λμ΄ λ³΅μ νμ¬ μμ
ν μ μλλ‘ νμμμ€.
κ°μ₯ μ μ©ν λκΈ
@mateocam κ·Έκ²μ λ¨μ§ μΌλ° νμ΄μ¬ sys κ²½λ‘ λͺ¨λ κ°μ Έμ€κΈ° νλͺ©μ λλ€. μ¬λ°λ₯Έ λλ ν 리μμ μ€ννκ±°λ ν¨ν€μ§λ₯Ό μμ€ν λΌμ΄λΈλ¬λ¦¬μ μ€μΉνκΈ°λ§ νλ©΄ λ©λλ€.
μμ μλ₯Ό μμνλ λ¨μΌ bash μ€ν¬λ¦½νΈμ ν¨κ» μμ μ½λλ₯Ό githubμ μ΄λκ°μ λ£μ΄ λ€λ₯Έ μ¬λμ΄ λ³΅μ νμ¬ μμ ν μ μλλ‘ νμμμ€.