我正在尝试创建一个函数,该函数在调用时将以不规则(和未定义)的时间间隔从外部源中提取信息。然后,这些数据将被放置在数据库中以供以后检索。即使发出其他页面请求,我也希望它在后台运行。这可能吗?
问问题
1033 次
2 回答
1
在请求/响应周期之外运行 Django 函数的最佳方法是将其实现为自定义管理命令,然后您可以使用cron
.
如果你已经在使用它,它celery
支持使用周期性任务celerybeat
,但这需要配置和运行celerybeat
守护进程,这可能会让人头疼。如您的问题标题中所述,Celery 还支持长时间运行的任务(事情在视图中开始,但在自己的时间完成)。
于 2012-08-23T16:10:15.813 回答
0
由于您似乎需要在加载页面时调用该函数,因此您可以将其放在您的视图中
def my_view(request):
#Call the long running function
long_running_function()
#Do view logic and return
return HttpResponse(...)
为了处理long_running_function
你可以使用celery
并创建一个tasks.py
实现你的外部数据源逻辑的。创建任务、加入队列和配置celery
总结在这里
如果您只需要一个更简单的解决方案来尝试它,请查看subprocess模块。
一个非常相似的答案在这里Django: start a process in a background thread?
于 2012-08-23T18:38:50.470 回答