mirror of https://gitlab.com/bashrc2/epicyon
Move inbox quota checks to separate function
parent
d7266136cc
commit
9ac74f9aba
190
inbox.py
190
inbox.py
|
@ -2682,6 +2682,104 @@ def runInboxQueueWatchdog(projectVersion: str, httpd) -> None:
|
||||||
httpd.restartInboxQueue = False
|
httpd.restartInboxQueue = False
|
||||||
|
|
||||||
|
|
||||||
|
def _inboxQuotaExceeded(queue: {}, queueFilename: str,
|
||||||
|
queueJson: {}, quotasDaily: {}, quotasPerMin: {},
|
||||||
|
domainMaxPostsPerDay: int,
|
||||||
|
accountMaxPostsPerDay: int,
|
||||||
|
debug: bool) -> bool:
|
||||||
|
"""limit the number of posts which can arrive per domain per day
|
||||||
|
"""
|
||||||
|
postDomain = queueJson['postDomain']
|
||||||
|
if not postDomain:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if domainMaxPostsPerDay > 0:
|
||||||
|
if quotasDaily['domains'].get(postDomain):
|
||||||
|
if quotasDaily['domains'][postDomain] > \
|
||||||
|
domainMaxPostsPerDay:
|
||||||
|
print('Queue: Quota per day - Maximum posts for ' +
|
||||||
|
postDomain + ' reached (' +
|
||||||
|
str(domainMaxPostsPerDay) + ')')
|
||||||
|
if len(queue) > 0:
|
||||||
|
try:
|
||||||
|
os.remove(queueFilename)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
queue.pop(0)
|
||||||
|
return True
|
||||||
|
quotasDaily['domains'][postDomain] += 1
|
||||||
|
else:
|
||||||
|
quotasDaily['domains'][postDomain] = 1
|
||||||
|
|
||||||
|
if quotasPerMin['domains'].get(postDomain):
|
||||||
|
domainMaxPostsPerMin = \
|
||||||
|
int(domainMaxPostsPerDay / (24 * 60))
|
||||||
|
if domainMaxPostsPerMin < 5:
|
||||||
|
domainMaxPostsPerMin = 5
|
||||||
|
if quotasPerMin['domains'][postDomain] > \
|
||||||
|
domainMaxPostsPerMin:
|
||||||
|
print('Queue: Quota per min - Maximum posts for ' +
|
||||||
|
postDomain + ' reached (' +
|
||||||
|
str(domainMaxPostsPerMin) + ')')
|
||||||
|
if len(queue) > 0:
|
||||||
|
try:
|
||||||
|
os.remove(queueFilename)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
queue.pop(0)
|
||||||
|
return True
|
||||||
|
quotasPerMin['domains'][postDomain] += 1
|
||||||
|
else:
|
||||||
|
quotasPerMin['domains'][postDomain] = 1
|
||||||
|
|
||||||
|
if accountMaxPostsPerDay > 0:
|
||||||
|
postHandle = queueJson['postNickname'] + '@' + postDomain
|
||||||
|
if quotasDaily['accounts'].get(postHandle):
|
||||||
|
if quotasDaily['accounts'][postHandle] > \
|
||||||
|
accountMaxPostsPerDay:
|
||||||
|
print('Queue: Quota account posts per day -' +
|
||||||
|
' Maximum posts for ' +
|
||||||
|
postHandle + ' reached (' +
|
||||||
|
str(accountMaxPostsPerDay) + ')')
|
||||||
|
if len(queue) > 0:
|
||||||
|
try:
|
||||||
|
os.remove(queueFilename)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
queue.pop(0)
|
||||||
|
return True
|
||||||
|
quotasDaily['accounts'][postHandle] += 1
|
||||||
|
else:
|
||||||
|
quotasDaily['accounts'][postHandle] = 1
|
||||||
|
|
||||||
|
if quotasPerMin['accounts'].get(postHandle):
|
||||||
|
accountMaxPostsPerMin = \
|
||||||
|
int(accountMaxPostsPerDay / (24 * 60))
|
||||||
|
if accountMaxPostsPerMin < 5:
|
||||||
|
accountMaxPostsPerMin = 5
|
||||||
|
if quotasPerMin['accounts'][postHandle] > \
|
||||||
|
accountMaxPostsPerMin:
|
||||||
|
print('Queue: Quota account posts per min -' +
|
||||||
|
' Maximum posts for ' +
|
||||||
|
postHandle + ' reached (' +
|
||||||
|
str(accountMaxPostsPerMin) + ')')
|
||||||
|
if len(queue) > 0:
|
||||||
|
try:
|
||||||
|
os.remove(queueFilename)
|
||||||
|
except BaseException:
|
||||||
|
pass
|
||||||
|
queue.pop(0)
|
||||||
|
return True
|
||||||
|
quotasPerMin['accounts'][postHandle] += 1
|
||||||
|
else:
|
||||||
|
quotasPerMin['accounts'][postHandle] = 1
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
if accountMaxPostsPerDay > 0 or domainMaxPostsPerDay > 0:
|
||||||
|
pprint(quotasDaily)
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
|
def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
|
||||||
projectVersion: str,
|
projectVersion: str,
|
||||||
baseDir: str, httpPrefix: str, sendThreads: [], postLog: [],
|
baseDir: str, httpPrefix: str, sendThreads: [], postLog: [],
|
||||||
|
@ -2817,93 +2915,11 @@ def runInboxQueue(recentPostsCache: {}, maxRecentPosts: int,
|
||||||
# change the last time that this was done
|
# change the last time that this was done
|
||||||
quotasLastUpdatePerMin = currTime
|
quotasLastUpdatePerMin = currTime
|
||||||
|
|
||||||
# limit the number of posts which can arrive per domain per day
|
if _inboxQuotaExceeded(queue, queueFilename,
|
||||||
postDomain = queueJson['postDomain']
|
queueJson, quotasDaily, quotasPerMin,
|
||||||
if postDomain:
|
domainMaxPostsPerDay,
|
||||||
if domainMaxPostsPerDay > 0:
|
accountMaxPostsPerDay, debug):
|
||||||
if quotasDaily['domains'].get(postDomain):
|
continue
|
||||||
if quotasDaily['domains'][postDomain] > \
|
|
||||||
domainMaxPostsPerDay:
|
|
||||||
print('Queue: Quota per day - Maximum posts for ' +
|
|
||||||
postDomain + ' reached (' +
|
|
||||||
str(domainMaxPostsPerDay) + ')')
|
|
||||||
if len(queue) > 0:
|
|
||||||
try:
|
|
||||||
os.remove(queueFilename)
|
|
||||||
except BaseException:
|
|
||||||
pass
|
|
||||||
queue.pop(0)
|
|
||||||
continue
|
|
||||||
quotasDaily['domains'][postDomain] += 1
|
|
||||||
else:
|
|
||||||
quotasDaily['domains'][postDomain] = 1
|
|
||||||
|
|
||||||
if quotasPerMin['domains'].get(postDomain):
|
|
||||||
domainMaxPostsPerMin = \
|
|
||||||
int(domainMaxPostsPerDay / (24 * 60))
|
|
||||||
if domainMaxPostsPerMin < 5:
|
|
||||||
domainMaxPostsPerMin = 5
|
|
||||||
if quotasPerMin['domains'][postDomain] > \
|
|
||||||
domainMaxPostsPerMin:
|
|
||||||
print('Queue: Quota per min - Maximum posts for ' +
|
|
||||||
postDomain + ' reached (' +
|
|
||||||
str(domainMaxPostsPerMin) + ')')
|
|
||||||
if len(queue) > 0:
|
|
||||||
try:
|
|
||||||
os.remove(queueFilename)
|
|
||||||
except BaseException:
|
|
||||||
pass
|
|
||||||
queue.pop(0)
|
|
||||||
continue
|
|
||||||
quotasPerMin['domains'][postDomain] += 1
|
|
||||||
else:
|
|
||||||
quotasPerMin['domains'][postDomain] = 1
|
|
||||||
|
|
||||||
if accountMaxPostsPerDay > 0:
|
|
||||||
postHandle = queueJson['postNickname'] + '@' + postDomain
|
|
||||||
if quotasDaily['accounts'].get(postHandle):
|
|
||||||
if quotasDaily['accounts'][postHandle] > \
|
|
||||||
accountMaxPostsPerDay:
|
|
||||||
print('Queue: Quota account posts per day -' +
|
|
||||||
' Maximum posts for ' +
|
|
||||||
postHandle + ' reached (' +
|
|
||||||
str(accountMaxPostsPerDay) + ')')
|
|
||||||
if len(queue) > 0:
|
|
||||||
try:
|
|
||||||
os.remove(queueFilename)
|
|
||||||
except BaseException:
|
|
||||||
pass
|
|
||||||
queue.pop(0)
|
|
||||||
continue
|
|
||||||
quotasDaily['accounts'][postHandle] += 1
|
|
||||||
else:
|
|
||||||
quotasDaily['accounts'][postHandle] = 1
|
|
||||||
|
|
||||||
if quotasPerMin['accounts'].get(postHandle):
|
|
||||||
accountMaxPostsPerMin = \
|
|
||||||
int(accountMaxPostsPerDay / (24 * 60))
|
|
||||||
if accountMaxPostsPerMin < 5:
|
|
||||||
accountMaxPostsPerMin = 5
|
|
||||||
if quotasPerMin['accounts'][postHandle] > \
|
|
||||||
accountMaxPostsPerMin:
|
|
||||||
print('Queue: Quota account posts per min -' +
|
|
||||||
' Maximum posts for ' +
|
|
||||||
postHandle + ' reached (' +
|
|
||||||
str(accountMaxPostsPerMin) + ')')
|
|
||||||
if len(queue) > 0:
|
|
||||||
try:
|
|
||||||
os.remove(queueFilename)
|
|
||||||
except BaseException:
|
|
||||||
pass
|
|
||||||
queue.pop(0)
|
|
||||||
continue
|
|
||||||
quotasPerMin['accounts'][postHandle] += 1
|
|
||||||
else:
|
|
||||||
quotasPerMin['accounts'][postHandle] = 1
|
|
||||||
|
|
||||||
if debug:
|
|
||||||
if accountMaxPostsPerDay > 0 or domainMaxPostsPerDay > 0:
|
|
||||||
pprint(quotasDaily)
|
|
||||||
|
|
||||||
if debug and queueJson.get('actor'):
|
if debug and queueJson.get('actor'):
|
||||||
print('Obtaining public key for actor ' + queueJson['actor'])
|
print('Obtaining public key for actor ' + queueJson['actor'])
|
||||||
|
|
Loading…
Reference in New Issue