flask+celery写一个数据库有关的任务,但是更新不上
用flask+celery写的代码没有办法进行更新,但是,直接调用方法却可以。
代码如下
flask和celery代码
def make_celery(app):
celery = Celery('flask_celery', broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app.config.update(
CELERY_BROKER_URL='amqp://xuewensi:xws09040@110.79.20.125:5672/proxy',
CELERY_RESULT_BACKEND='amqp://xuewensi:xws09040@110.79.20.125:5672/backend',
CELERYD_CONCURRENCY=4,
CELERY_TASK_SERIALIZER='pickle',
CELERY_RESULT_SERIALIZER='pickle',
CELERY_ACCEPT_CONTENT=['pickle']
)
任务代码
def insert(p):
p.check_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
db.session.commit()
调用代码
pro = Proxies.query.first()
insert.delay(pro)
尝试过直接调用,可以update
另外项目结构的话
create_app创建flask实例app
database创建数据库对象,引用app
剩下的文件都import这两个模块里面的实例。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为调用和执行的 db 不是同一个 session,试试