自动推广
This commit is contained in:
@@ -3,24 +3,48 @@
|
||||
namespace app\api\job;
|
||||
|
||||
use think\queue\Job;
|
||||
use think\Log;
|
||||
use app\common\ExpertFinderService;
|
||||
|
||||
/**
|
||||
* 专家抓取队列任务
|
||||
* 注意:此任务推送到队列名 "FetchExperts",必须单独启动 worker 才会执行:
|
||||
* php think queue:listen --queue FetchExperts
|
||||
* 若只运行 queue:listen 不指定队列,默认只消费 "mail",本任务不会被执行。
|
||||
*/
|
||||
class FetchExperts
|
||||
{
|
||||
public function fire(Job $job, $data)
|
||||
{
|
||||
try {
|
||||
$finder = new \app\api\controller\ExpertFinder();
|
||||
$result = $finder->doFetchForField(
|
||||
$data['field'],
|
||||
$data['source'] ?? 'pubmed',
|
||||
$data['per_page'] ?? 100,
|
||||
$data['min_year'] ?? null
|
||||
$field = isset($data['field']) ? $data['field'] : '';
|
||||
// $attempts = $job->attempts();
|
||||
//
|
||||
$service = new ExpertFinderService();
|
||||
// $service->log('[FetchExperts] start field=' . $field . ' attempts=' . $attempts);
|
||||
//
|
||||
// try {
|
||||
$result = $service->doFetchForField(
|
||||
$field,
|
||||
isset($data['source']) ? $data['source'] : 'pubmed',
|
||||
isset($data['per_page']) ? intval($data['per_page']) : 100,
|
||||
isset($data['min_year']) ? $data['min_year'] : null
|
||||
);
|
||||
Log::info('FetchExperts completed: ' . json_encode($result));
|
||||
} catch (\Exception $e) {
|
||||
Log::error('FetchExperts failed: ' . $e->getMessage());
|
||||
}
|
||||
// $service->log('[FetchExperts] completed field=' . $field . ' result=' . json_encode($result));
|
||||
// } catch (\Throwable $e) {
|
||||
// $service->log(
|
||||
// '[FetchExperts] failed field=' . $field .
|
||||
// ' msg=' . $e->getMessage() .
|
||||
// ' file=' . $e->getFile() .
|
||||
// ' line=' . $e->getLine()
|
||||
// );
|
||||
//
|
||||
// if ($attempts >= 3) {
|
||||
// $job->delete();
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// $job->release(60);
|
||||
// return;
|
||||
// }
|
||||
|
||||
$job->delete();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user