python - 向 Django 添加后台任务
问题描述
我不知道我是否在这里选择了一个好的方法。事实上,我很有可能完全错了。
在我的 Django 应用程序中,我需要与 Twitter API 建立连接,以不断获取所需的推文。为了做到这一点,我写了一个脚本使用
def connect():
response = requests.get(
"https://api.twitter.com/2/tweets/search/stream",
headers=headers,
stream=True,
)
for response_line in response.iter_lines():
if response_line:
json_response = json.loads(response_line)
print(json.dumps(json_response, indent=4, sort_keys=True))
问题是,我不知道在 Django 中如何以及在何处调用此函数。这是我到目前为止发现的:
- 这个函数阻塞了它的调用者的流程,所以它需要被
并发执行,无论是作为一个进程还是一个线程。 - 为了执行这样的功能,也称为后台任务,我需要使用繁重的复杂选项,例如Celery,或者使用轻量级库,例如DjangoBackgroundTasks。
- 显然,我使用了 DjangoBackgroundTasks 并安装了它。但是现在有一些问题我无法解决。首先,我应该在代码的哪里调用我的 connect() 函数?我见过人们在控制台中调用它,但这不是我想要做的,我需要调用它,并在主 Django 应用程序之外执行它。
PS 我看过下面链接这样的实现,但老实说,它们超出了我的水平,我无法弄清楚代码是如何工作的。 https://github.com/michaelbrooks/django-twitter-stream/tree/master/twitter_stream
解决方案
推荐阅读
- google-cloud-platform - GKE 上的 Cloudrun - 重启问题
- java - 在 JTable 上禁用 CTRL+C(双击单元格后)
- angular - 如何在项目和包含的自定义库之间共享 AngularFire 设置
- java - 如何在Java中获取没有转义序列的发布请求的响应正文?
- javascript - 提取 URL 参数
- javascript - 使用bitcoinjs的Blockcypher交易签名错误
- unity3d - Unity - 预制件上的脚本代表什么?
- php - 我无法更新数据库中的产品储备
- php - 如何使用 preg_match 替换数组
- android - 我无法通过 WorkManager 获取 enqueueUniquePeriodicWork 的StatusesByTag