假设我在一个表中有 1000 个 user_id,我将每小时运行一次以从 Google API 获取信息并更新该表中的 3 个字段。影响如何以及如何有效地完成?
我见过这个变体:
m = Module.objects.get(user_id=1).update(field_one=100, field_two=200, field_three=300)
还有这个:
m = Module.objects.get(user_id=1)
m.field_one = 100
m.field_two = 200
m.field_three = 300
m.save()
还有如何才能让它每小时运行一次并获取该信息?从来没有做过这样的事情。
最佳答案
每小时使用Redis、Celery设置异步任务队列。看这里https://realpython.com/blog/python/asynchronous-tasks-with-django-and-celery/有关如何为 Django 设置异步任务队列系统的更多信息。
这是tasks.py
from celery.task import periodic_task
from celery.schedules import crontab
@periodic_task(run_every=crontab(minute=0, hour='*/1'))
def get_data_from_google_api():
data_from_google =ping_google_api() # ping google api to get data
return Module.objects.get(user_id=1).update(field_one= data_from_google['field_one'], field_two= data_from_google['field_two'], field_three= data_from_google['field_three'])
在这里查看更多信息:
关于django - 使用 Python/Django 每小时更新数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285797/