Python 如何在启动gunicorn之前设置Django服务器状态

Python 如何在启动gunicorn之前设置Django服务器状态,python,django,gunicorn,Python,Django,Gunicorn,我正在构建一个Django服务器,我将使用gunicorn托管该服务器,并希望在使用我的API端点启动一个实际的HTTP服务器之前设置其(Django)的内部状态(从区块链获取和缓存一些数据,启动执行一些后台更新的线程等)。虽然使用“manage.py runserver”(在实际启动服务器之前,使用我需要的所有操作创建我自己的实现)相当容易,但我仍在绞尽脑汁寻找使用WSGI gunicorn服务器实现这一点的最佳方法,该服务器似乎立即启动,但没有明显的方法来指定任何预运行操作 我现在的做法如下

我正在构建一个Django服务器,我将使用gunicorn托管该服务器,并希望在使用我的API端点启动一个实际的HTTP服务器之前设置其(Django)的内部状态(从区块链获取和缓存一些数据,启动执行一些后台更新的线程等)。虽然使用“manage.py runserver”(在实际启动服务器之前,使用我需要的所有操作创建我自己的实现)相当容易,但我仍在绞尽脑汁寻找使用WSGI gunicorn服务器实现这一点的最佳方法,该服务器似乎立即启动,但没有明显的方法来指定任何预运行操作

我现在的做法如下:

导入异步IO
从django.core.management.commands.runserver导入BaseRunserverCommand
从channels.management.commands.runserver导入命令作为RunChannels
从QTCore.blockchain.blockchain_interop导入BcInterop
类命令(运行通道):
def内部_运行(自身、*args、**kwargs):
异步def设置_bc():
self.stdout.write('旋转区块链互操作模块…',结束='\n')
等待BcInterop.init()
self.stdout.write('区块链互操作准备就绪',结束='\n')
main\u loop=asyncio.new\u event\u loop()
asyncio.set\u事件\u循环(主循环)
尝试:
主循环。运行循环,直到循环完成(设置循环)
self.stdout.write('正在启动Django服务器…',结束='\n')
超级(命令,自我)。内部运行(*args,**kwargs)
最后:
主循环关闭()

在实际启动服务器之前需要执行的所有操作
。您是否可以通过代码示例进一步说明这意味着什么。这些脚本输出什么信息。django应用程序是如何接收这些信息的?启动gunicorn与启动dev服务器有什么不同?@v25用代码示例编辑了我的问题。Django服务器在需要时继续调用BcInterop,因为它保存我正在使用的数据和线程。这里的问题是BcInterop引用了一些Django应用程序及其组件,这意味着在我执行自定义任务之前,服务器本身必须完全初始化。当我尝试在wsgi.py(gunicorn entrypoint)
中运行它时,实际服务器启动之前需要执行的所有操作都不是这样的。您是否可以通过代码示例进一步说明这意味着什么。这些脚本输出什么信息。django应用程序是如何接收这些信息的?启动gunicorn与启动dev服务器有什么不同?@v25用代码示例编辑了我的问题。Django服务器在需要时继续调用BcInterop,因为它保存我正在使用的数据和线程。这里的问题是BcInterop引用了一些Django应用程序及其组件,这意味着在我执行自定义任务之前,服务器本身必须完全初始化。当我尝试在wsgi.py(gunicorn entrypoint)中运行它时,情况并非如此