长期使用网络收集的数据定期更新 Django DB -?
long runner to regularly update Django DB with web harvested data -?
我的 Django 项目有一个面向用户的站点,该站点很少将新对象插入用户数据库-table(以后会有数百个,也许数千个)。
此外,每天几次,我需要为我的所有对象查询外部网络服务 - 但速度很慢,以免违反他们的“每 10 秒 1 个请求”规则。所以这第二个任务是一个很长的 运行ner,我无法通过 urls.py 请求路由它。
因此,除了(uWSGI)服务器进程...我将在后台有第二个进程运行ning;它需要使用相同的数据库(使用默认的 sqlite3)。
- 我可以 运行 在访问同一个数据库时遇到并发问题吗? (如何)Django 可以保护我免受那个? (如果不行)如何解决?
- 导入我的 models.py - 这就是我访问 Django 数据库所需要做的一切吗?
- 还有其他可能对我有帮助的提示吗?
万分感谢!
Whosebug 太棒了!
:-)
Django provides facilities 也用于编写命令行应用程序。通过这种方式,您可以访问与 Web 进程相同的所有内容,包括模型。
并发由您的数据库处理,而不是 django,因此您不必担心。如果您必须同时写入多条数据并且它们不能不同步,您可能唯一想使用的是 transactions。
class Command(BaseCommand):
def handle(self, *args, **kwargs):
try:
while True:
self._fetch_data()
time.sleep(10)
except KeyboardInterrupt:
pass
def _fetch_data(self):
data = ... # fetch data here
MyModel.objects.create(foo=data.foo, bar=data.bar) # insert into db
假设上面的 class 在你的一个应用程序的 management/commands/mycommand.py
文件夹中,使用 manage.py
:
执行它
python manage.py mycommand
我的 Django 项目有一个面向用户的站点,该站点很少将新对象插入用户数据库-table(以后会有数百个,也许数千个)。
此外,每天几次,我需要为我的所有对象查询外部网络服务 - 但速度很慢,以免违反他们的“每 10 秒 1 个请求”规则。所以这第二个任务是一个很长的 运行ner,我无法通过 urls.py 请求路由它。
因此,除了(uWSGI)服务器进程...我将在后台有第二个进程运行ning;它需要使用相同的数据库(使用默认的 sqlite3)。
- 我可以 运行 在访问同一个数据库时遇到并发问题吗? (如何)Django 可以保护我免受那个? (如果不行)如何解决?
- 导入我的 models.py - 这就是我访问 Django 数据库所需要做的一切吗?
- 还有其他可能对我有帮助的提示吗?
万分感谢!
Whosebug 太棒了!
:-)
Django provides facilities 也用于编写命令行应用程序。通过这种方式,您可以访问与 Web 进程相同的所有内容,包括模型。
并发由您的数据库处理,而不是 django,因此您不必担心。如果您必须同时写入多条数据并且它们不能不同步,您可能唯一想使用的是 transactions。
class Command(BaseCommand):
def handle(self, *args, **kwargs):
try:
while True:
self._fetch_data()
time.sleep(10)
except KeyboardInterrupt:
pass
def _fetch_data(self):
data = ... # fetch data here
MyModel.objects.create(foo=data.foo, bar=data.bar) # insert into db
假设上面的 class 在你的一个应用程序的 management/commands/mycommand.py
文件夹中,使用 manage.py
:
python manage.py mycommand