【发布时间】:2018-08-27 11:22:21
【问题描述】:
想知道是否有人可以帮助我或至少指导我正确的方式。
我目前正在运行一个网络和一个工作进程。我需要一个任务在 dynos 在线时 24/7 运行,它的工作是访问数据库并通过根据当前时间戳检查每条记录的“过期”值来删除已过期的记录。
我的 worker.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()
这如 heroku 文档所示。
然后在我的 app.py 中:
from rq import Queue
from worker import conn
from datetime import datetime
q = Queue(connection=conn)
def myFunction():
while True:
for item in Users.query.all():
if int(item.expiry) < (datetime.now().timestamp()):
db.session.delete(item)
db.session.commit()
If __name__ == “__main__”:
q.enqueue(myFunction)
app.run()
我的个人资料如下所示:
web: gunicorn app:app
worker: python worker.py
当我运行它时,过期的记录不会从数据库中删除。无论如何我可以解决这个问题或进一步诊断问题吗?
【问题讨论】:
-
你似乎没有任何东西可以真正使 myFunction 入队。
-
感谢您的回复。我确实有一些东西要排队,但完全忘记在问题中包含它!谢谢提醒,有空我会修改的。
标签: python heroku redis heroku-postgres