我正在尝试使用Django-q运行计划任务我遵循了文档,但它没有运行
这是我的配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'db_cache_table',
}
}
Q_CLUSTER = {
'name': 'DjangORM',
'workers': 4,
'timeout': 90,
'retry': 120,
'queue_limit': 50,
'bulk': 10,
'orm': 'default'
}这是我的计划任务

未执行任何操作,请帮助
发布于 2021-01-30 15:49:36
一开始,我也遇到了处理计划任务的问题,但最终还是找到了一个工作流程。
我在windows机器上运行django-q,使用django ORM作为代理。在讨论我提出的执行例程之前,让我们先快速检查一下我的模块,从..开始。
settings.py:
Q_CLUSTER = {
"name": "austrian_energy_monthly",
"workers": 1,
"timeout": 10,
"retry": 20,
"queue_limit": 50,
"bulk": 10,
"orm": "default",
"ack_failures": True,
"max_attempts": 1,
"attempt_count": 0,
}。。和我的文件夹结构:

如您所见,我的django项目的文件夹在src文件夹中。此外,还有一个我为这个项目创建的应用程序的文件夹,它被简单地称为" app“。在app文件夹中,我有另一个名为"cron“的文件夹,其中包含以下与调度相关的文件和函数:
tasks.py
我没有使用django-q提供的schedule()方法,而是直接使用创建表(参见:django-q official schedule docs)
from django.utils import timezone
from austrian_energy_monthly.app.cron.func import create_text_file
from django_q.models import Schedule
Schedule.objects.create(
func="austrian_energy_monthly.app.cron.func.create_text_file",
kwargs={"content": "Insert this into a text file"},
hooks="austrian_energy_monthly.app.cron.hooks.print_result",
name="Text file creation process",
schedule_type=Schedule.ONCE,
next_run=timezone.now(),
)确保将"right“路径分配给"func”关键字。仅仅使用"func.create_text_file“对我来说是行不通的,即使这些文件放在同一个文件夹中。"hooks“关键字也是如此。
(注意:我已经通过setup.py将我的项目设置为一个开发包,这样我就可以从我的src文件夹中的任何地方调用它)
func.py:
包含由明细表对象调用的函数。
def create_text_file(content: str) -> str:
file = open(f"copy.txt", "w")
file.write(content)
file.close()
return "Created a text file"
hooks.py:
包含调度进程完成后调用的函数。
def print_result(task):
print(task.result)现在让我们看看我是如何通过上面描述的文件示例来运行执行的:

您现在可以看到计划的任务,在管理页面的成功列上有一个问号(选项卡"Scheduled tasks",如您的图片所示):

我打开了一个新的终端并使用“

可以通过在终端中查看"13:22:17 Q INFO Processed ten-virginia hook“以及钩子打印语句"Created a text file”来检查成功的执行。此外,您还可以在管理页面的"Successful Tasks“选项卡下查看它,在那里您应该会看到:

希望这能有所帮助!
发布于 2020-03-03 15:07:28
Django-q不支持windows。:)
https://stackoverflow.com/questions/60501065
复制相似问题