Redis на Heroku не отвечает
Я новичок в задаче очереди Redis. Я попытался выполнить какую-то функцию в очереди с помощью надстройки Redis To Go. Но после того, как я помещаю какую-то задачу в очередь, кажется, что она исчезает.
Вот мой код
import Flask
import redis
from rq import Queue
REDIS_URL = os.getenv('REDISTOGO_URL', None)
if REDIS_URL!=None:
r = redis.from_url(REDIS_URL)
else:
r = redis.Redis()
q = Queue(connection=r)
def function(pam1):
print("Checkpoint1")
return 0
@main.route('/name', methods=['GET', 'POST'])
def displayname():
job = q.enqueue(function, pam1=0)
return job.id
Дополнительная информация об очереди: все еще указывается идентификатор задания, например, 7344337b-cca0-442a-b43a-abcdc88f012c.
но никаких следов "Checkpoint1" в логе героку вообще нет.
2 ответа
Спасибо @v25. Настоящая причина того, что Redis не отвечает, потому что у меня нет WORKER. После этого см. Руководство Heroku по запуску рабочего, теперь моя проблема решена.
Я не уверен в реализации ведения журнала Heroku, но если вы смотрите не на тот журнал (или что-то в этом роде), вы можете попробовать это...
Вместо того, чтобы печатать контрольную точку, увеличьте значение настраиваемого ключа redis:
def function(pam1):
r.incr('job_ran', 1)
return 0
Затем создайте маршрут, на котором вы можете проверить это значение:
@app.route('/show_count')
def show_count():
n = r.get('job_ran')
if n is None:
n = 0
else:
n = n.decode('utf-8')
return f'Job has run {n} times'
Теперь поставьте несколько заданий в очередь и проверьте /show_count
route, чтобы убедиться, что он соответствующим образом увеличился.