【发布时间】:2021-04-14 07:38:43
【问题描述】:
这里的第一个问题。
我是 Python 的初学者,对于我的最后一个项目,我正在 Django 中制作一个抓取应用程序。当我运行我的服务器时,我希望它启动一个BackgroundScheduler,它每 10 分钟调用一次我的抓取应用程序。现在我的调度程序在一个按钮上,但我不希望它在一个按钮上,我希望它在我运行服务器时正常工作,这可能吗?
我尝试过的:
- 将我的逻辑写入 apps.py 然后将 appconfig 添加到设置 到 INSTALLED_APPS 但我得到:
ModuleNotFoundError:没有名为“finance_app.apps.FinanceAppConfig”的模块; “finance_app.apps”不是一个包
- 在我的逻辑所在的地方创建一个 scheduler.py 文件并将其添加到 INSTALLED_APPS 但仍然无法正常工作
apps.py 及其逻辑
from apscheduler.schedulers.background import BackgroundScheduler
from django.apps import AppConfig
from finance_app.scraper import scrape
class FinanceAppConfig(AppConfig):
name = 'finance_app'
def ready(self):
print('Initializing scheduler')
scheduler = BackgroundScheduler()
scheduler.add_job(scrape, 'interval', second=30)
scheduler.start()
工作的 BackgroundScheduler:
scheduler = BackgroundScheduler()
scheduler.add_job(scrape, 'interval', second=30)
scheduler.start()
我视图中调用刮板的调度器
def scraper_view(request):
scrape()
scheduler = BackgroundScheduler()
scheduler.add_job(scrape, 'interval', minutes=10)
scheduler.start()
return redirect("../")
带有我想要删除的视图的按钮
<div style="text-align: center;"><h2 class="subtitlu">
<a href="{% url 'scraper' %}">Scrape News</a>
</h2>
</div>
【问题讨论】:
-
您可以使用 django celery 自动执行常规任务。参考 this 了解更多关于 celery 和任务调度的信息。
-
我忘了说,我在 windows 上,而且 celery 与我所看到的 windows 不兼容。