我的Django项目有一个面向用户的站点,它很少将新对象插入用户数据库表中(稍后将有数百个,甚至数千个)。
另外,每天有几次,我需要查询一个外部的webservice,查找我的所有对象--但是慢慢地,这样就不会违反他们的“10秒1请求”规则。所以这第二个任务是一个长跑,我不能通过一个urls.py请求。
因此,除了(uWSGI)服务器进程.我将在后台运行第二个进程;它需要使用相同的数据库(使用默认的sqlite3)。
多谢百万!
Stackoverflow岩石!
:-)
发布于 2016-05-01 19:38:27
Django 提供设施也用于编写命令行应用程序。这样,您就可以从web过程中访问所有相同的东西,包括模型。
并发性是由数据库处理的,而不是django,因此您不必担心这个问题。如果您必须同时编写多个数据段,并且它们不能不同步,那么您可能需要使用交易记录。
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假设上述类位于应用程序中的management/commands/mycommand.py文件夹中,则使用manage.py执行它
python manage.py mycommandhttps://stackoverflow.com/questions/36970601
复制相似问题