我有一个使用 django 的后端服务,我需要订阅一个托管在 GCP pub/sub 上的消息队列
这是 Google 提供的示例代码: https://cloud.google.com/pubsub/docs/pull
实现一个功能很容易,
但我必须通过如下命令启动 django 服务器:
python manage.py runserver
或者ASGI命令
这个订阅函数应该持续运行,最好在后台运行,
我怎样才能做到这一点?
我试过 django-crontab 或 django-background-task,但是这两个都需要手动运行命令,我认为这不是我需要的。
最佳答案
在Django中添加如下格式的新进程
taskApp/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
task_process.py
在startup.sh中添加如下命令
#!/bin/sh
gunicorn --bind :8000 --workers 3 --worker-class uvicorn.workers.UvicornWorker myapplication.asgi:application & python manage.py task_process
或
#!/bin/sh
gunicorn --bind :8000 --workers 3 --worker-class uvicorn.workers.UvicornWorker myapplication.wsgi:application & python manage.py task_process
在 Dockerfile 中最后调用它
RUN chmod +x startup.sh
CMD ["./startup.sh"]
要检查处理是否正在运行,您可以如下验证
ps -ef | grep task_process
关于python - 运行 Django 服务器时如何订阅 GCP Pub/Sub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328787/